Я развернул новый сервер, который имеет ту же самую версию 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). Я работаю над тем, что какая-то конкретная версия рубигемов сломана.