2016-02-11 2 views
1

Я развернул новый сервер, который имеет ту же самую версию JRuby (1.7.22), Java (openjdk-7-jre-headless 7u51), а также как другие серверы. На обоих серверах работает Ubuntu 14.04, но у нового есть несколько новых пакетов.Сбой пакета в JRuby с «TypeError: невозможно преобразовать Regexp в String»

Я развернул ту же версию проекта, используя Capistrano, на новый сервер.

Когда Capistrano работает узелок (или когда я его сам сделать), следующее сообщение об ошибке и CallStack представлены:

TypeError: can't convert Regexp into String 
       end_with? at org/jruby/RubyString.java:5281 
        path= at /usr/local/rbenv/versions/jruby-1.7.22/lib/ruby/shared/rubygems/path_support.rb:62 
       initialize at /usr/local/rbenv/versions/jruby-1.7.22/lib/ruby/shared/rubygems/path_support.rb:35 
        paths at /usr/local/rbenv/versions/jruby-1.7.22/lib/ruby/shared/rubygems.rb:329 
         path at /usr/local/rbenv/versions/jruby-1.7.22/lib/ruby/shared/rubygems.rb:352 
         dirs at /usr/local/rbenv/versions/jruby-1.7.22/lib/ruby/shared/rubygems/defaults/jruby.rb:84 
       stubs_for at /usr/local/rbenv/versions/jruby-1.7.22/lib/ruby/shared/rubygems/specification.rb:850 
       find_name at /usr/local/rbenv/versions/jruby-1.7.22/lib/ruby/gems/shared/gems/bundler-1.10.6/lib/bundler/rubygems_integration.rb:639 
        report at /usr/local/rbenv/versions/jruby-1.7.22/lib/ruby/gems/shared/gems/bundler-1.10.6/lib/bundler/env.rb:23 
         each at org/jruby/RubyArray.java:1613 
        report at /usr/local/rbenv/versions/jruby-1.7.22/lib/ruby/gems/shared/gems/bundler-1.10.6/lib/bundler/env.rb:22 
    request_issue_report_for at /usr/local/rbenv/versions/jruby-1.7.22/lib/ruby/gems/shared/gems/bundler-1.10.6/lib/bundler/friendly_errors.rb:66 
     with_friendly_errors at /usr/local/rbenv/versions/jruby-1.7.22/lib/ruby/gems/shared/gems/bundler-1.10.6/lib/bundler/friendly_errors.rb:41 
        (root) at /usr/local/rbenv/versions/jruby-1.7.22/lib/ruby/gems/shared/gems/bundler-1.10.6/bin/bundle:18 
         load at org/jruby/RubyKernel.java:1059 
        (root) at /usr/local/rbenv/versions/jruby-1.7.22/bin/bundle:22 

Я сделал некоторые отладки, и наверняка, Gem.path_separator является Regexp. Я сделал ту же самую отладку с JRuby на моей локальной машине, у которой была установлена ​​одна версия JRuby в течение нескольких месяцев, и хотя я могу подтвердить, что Gem.path_separator тоже является Regexp, я не могу воспроизвести проблему.

Мне удалось заставить сервер работать, скопировав всю папку /usr/local/rbenv/versions/jruby-1.7.22 с рабочего сервера.

Я устанавливаю JRuby с помощью rbenv, который установлен таким образом: git clone https://github.com/sstephenson/ruby-build.git /usr/local/rbenv/plugins/ruby-build. Я перезапускаю фиксацию так же, как и на более старом сервере, и после удаления папки /usr/local/rbenv/versions/jruby-1.7.22 и переустановки jruby я все равно получаю тот же результат.

Я ничего не вижу на этом сервере, который должен повлиять на то, разрешает ли JRuby соответствие Regex концу строки.

Edit: Также хочу добавить, что следующее в файле .jrubyrc (который не изменился):

compat.version=2.0 

Edit: Я получаю ближе к ответу. Оказывается, сценарий установки, который я использовал, выполнялся gem update --system. Версия рубигемов отличается (2.4.8 против 2.5.2). Я работаю над тем, что какая-то конкретная версия рубигемов сломана.

ответ

1

Я подтвердил, что это проблема с Rubygems 2.5.2. Все версии до 2.5.1 работают правильно.

Я не нашел способ понизить RubyGems, так что для меня решение переустановить JRuby с помощью rbenv и либо оставить RubyGems в одиночку, или если вам нужна более новая версия, чем по умолчанию, запустите:

gem update --system 2.5.1 

 Смежные вопросы

  • Нет связанных вопросов^_^