Невозможно установить рельсы с jRuby

Я пытаюсь установить рельсы с jRuby с помощью следующей команды

jruby -S gem установить рельсы -v 3.0.6

Но застрял с ошибкой:

JRuby limited openssl loaded. http://jruby.org/openssl
gem install jruby-openssl for full support.
System.java:-2:in `arraycopy': java.lang.ArrayIndexOutOfBoundsException
        from DefaultResolver.java:111:in `makeTime'
        from DefaultResolver.java:277:in `create'
        from DefaultResolver.java:317:in `handleScalar'
        from DefaultResolver.java:435:in `orgHandler'
        from DefaultResolver.java:455:in `node_import'
        from org/yecht/ruby/DefaultResolver$s_method_1_0$RUBYINVOKER$node_import
.gen:65535:in `call'
        from CachingCallSite.java:146:in `call'
        from RubyLoadHandler.java:40:in `handle'
        from Parser.java:300:in `addNode'
        from DefaultYAMLParser.java:676:in `yyparse'
        from Parser.java:290:in `yechtparse'
        from Parser.java:284:in `parse'
        from YParser.java:152:in `load'
        from org/yecht/ruby/YParser$s_method_0_1$RUBYINVOKER$load.gen:65535:in `
call'
        from JavaMethod.java:630:in `call'
        from DynamicMethod.java:186:in `call'
        from CachingCallSite.java:309:in `cacheAndCall'
        from CachingCallSite.java:148:in `call'
        from CallOneArgNode.java:57:in `interpret'
        from LocalAsgnNode.java:123:in `interpret'
        from NewlineNode.java:104:in `interpret'
        from InterpretedMethod.java:180:in `call'
        from DefaultMethod.java:174:in `call'
        from CachingCallSite.java:309:in `cacheAndCall'
        from CachingCallSite.java:148:in `call'
        from CallOneArgNode.java:57:in `interpret'
        from LocalAsgnNode.java:123:in `interpret'
        from NewlineNode.java:104:in `interpret'
        from BlockNode.java:71:in `interpret'
        from InterpretedMethod.java:180:in `call'
        from DefaultMethod.java:174:in `call'
        from CachingCallSite.java:309:in `cacheAndCall'
        from CachingCallSite.java:148:in `call'
        from CallOneArgNode.java:57:in `interpret'

Любой может помочь мне избавиться от этой ошибки.

Заранее спасибо .


person Vik    schedule 18.05.2011    source источник
comment
Вы пробовали строку «gem install jruby-openssl», о которой говорится в выводе об ошибке?   -  person jaydel    schedule 18.05.2011
comment
да, я могу установить jruby -S gem install jruby-openssl Но после этого, когда я запускаю команду для установки рельсов, она выдает мне указанное выше исключение.   -  person Vik    schedule 19.05.2011


Ответы (3)


У меня была эта проблема совсем недавно, но это было с rspec. Попробуйте это:
jruby --1.9 -S gem install rails -v 3.0.6

Это говорит jruby использовать интерпретатор ruby ​​1.9.

person ryeguy    schedule 20.05.2011
comment
Это сработало для меня. Вот ссылка на проблему JRuby: jira.codehaus.org/browse/JRUBY-5581 Похоже, это может быть исправлено в 1.6.2. - person benvolioT; 24.05.2011

Эта ошибка была исправлена ​​в JRuby 1.6.2.

Обходной путь для JRuby 1.6.1 в командной строке (Windows):

set JRUBY_OPTS=--1.9
# in your specific case
gem install rails   

# this is where I got the error (Rails 3 with Bundler)
bundle update
person Matt    schedule 15.06.2011
comment
Да, я получил ту же ошибку при установке Vagrant на Windows 7 x64 с установленным jruby 1.5.6. Удаление 1.5.6 и установка последней версии (1.6.5) решили проблему. - person Bill Paetzke; 06.12.2011

Эта ошибка может возникнуть с некоторыми версиями устанавливаемого вами гема, но не с другими. Это связано с тем, что ошибка YAML связана с полем date в файле YAML, как указано в этот комментарий к ошибке 5581.

Например, версия 1.4.2 биогема у меня вызвала исключение.

Инструкции по получению метаданных взяты из Shaving a YAML Yak., за исключением того, что я заменил gzcat на gunzip и less

gem fetch bio --version 1.4.2
tar xvf bio-1.4.2.gem
gunzip metadata.gz
less metadata | grep date
date: 2011-08-26 00:00:00.000000000 Z

YAML.load("date: 2011-08-26 00:00:00.000000000 Z") # Causes exception

тогда как для версии 1.4.1 био

gem fetch bio --version 1.4.1
tar xvf bio-1.4.1.gem
gunzip metadata.gz
less metadata | grep date
date: 2010-10-22 00:00:00 +09:00

YAML.load("date: 2010-10-22 00:00:00 +09:00") # Doesn't cause an exception

Так что sudo jruby -S gem install bio --version 1.4.1 сработало для меня.

Если вам нужна самая последняя и самая лучшая, вы можете получить гем и изменить его метаданные или создать гем самостоятельно, но для меня это было достаточно хорошо™.

person Andrew Grimm    schedule 21.03.2012