Jruby:无法在 rails 应用程序的 jruby 中启动 webrick 服务器

Jruby: Not able to start webrick server in jruby on rails application

我已经在我的 ubuntu 机器上安装了 jruby 1.7.16 和 rails 4.1.8。我有现有的 jruby 应用程序,我想 运行 使用 webbrick 服务器,但我无法 运行 它。每当我使用命令 rails 启动 webrick 服务器时,我都会遇到以下错误。

successful load of fcntl
Bundler::GemRequireError: There was an error while trying to load the gem 'activerecord-jdbc-adapter'.
Gem Load Error is: private method `require' called for Kernel:Module
Backtrace for gem load error is:
/home/administrator/.rvm/gems/jruby-1.7.16@analytics-core/gems/bundler-1.13.1/lib/bundler/runtime.rb:91:in `require'
org/jruby/RubyArray.java:1613:in `each'
/home/administrator/.rvm/gems/jruby-1.7.16@analytics-core/gems/bundler-1.13.1/lib/bundler/runtime.rb:86:in `require'
org/jruby/RubyArray.java:1613:in `each'
/home/administrator/.rvm/gems/jruby-1.7.16@analytics-core/gems/bundler-1.13.1/lib/bundler/runtime.rb:75:in `require'
/home/administrator/.rvm/gems/jruby-1.7.16@analytics-core/gems/bundler-1.13.1/lib/bundler.rb:106:in `require'
/home/administrator/Desktop/vitality_iq_project/analytics-core/config/application.rb:19:in `(root)'
org/jruby/RubyKernel.java:1065:in `require'
/home/administrator/.rvm/gems/jruby-1.7.16@analytics-core/gems/railties-4.1.8/lib/rails/commands/commands_tasks.rb:1:in `(root)'
org/jruby/RubyKernel.java:1880:in `tap'
/home/administrator/.rvm/gems/jruby-1.7.16@analytics-core/gems/railties-4.1.8/lib/rails/commands/commands_tasks.rb:79:in `server'
/home/administrator/.rvm/gems/jruby-1.7.16@analytics-core/gems/railties-4.1.8/lib/rails/commands/commands_tasks.rb:76:in `server'
/home/administrator/.rvm/gems/jruby-1.7.16@analytics-core/gems/railties-4.1.8/lib/rails/commands/commands_tasks.rb:40:in `run_command!'
org/jruby/RubyKernel.java:1065:in `require'
script/rails:6:in `(root)'
Bundler Error Backtrace:

       require at /home/administrator/.rvm/gems/jruby-1.7.16@analytics-core/gems/bundler-1.13.1/lib/bundler/runtime.rb:95
          each at org/jruby/RubyArray.java:1613
       require at /home/administrator/.rvm/gems/jruby-1.7.16@analytics-core/gems/bundler-1.13.1/lib/bundler/runtime.rb:86
          each at org/jruby/RubyArray.java:1613
       require at /home/administrator/.rvm/gems/jruby-1.7.16@analytics-core/gems/bundler-1.13.1/lib/bundler/runtime.rb:75
       require at /home/administrator/.rvm/gems/jruby-1.7.16@analytics-core/gems/bundler-1.13.1/lib/bundler.rb:106
        (root) at /home/administrator/Desktop/vitality_iq_project/analytics-core/config/application.rb:19
       require at org/jruby/RubyKernel.java:1065
        (root) at /home/administrator/.rvm/gems/jruby-1.7.16@analytics-core/gems/railties-4.1.8/lib/rails/commands/commands_tasks.rb:1
           tap at org/jruby/RubyKernel.java:1880
        server at /home/administrator/.rvm/gems/jruby-1.7.16@analytics-core/gems/railties-4.1.8/lib/rails/commands/commands_tasks.rb:79
        server at /home/administrator/.rvm/gems/jruby-1.7.16@analytics-core/gems/railties-4.1.8/lib/rails/commands/commands_tasks.rb:76
  run_command! at /home/administrator/.rvm/gems/jruby-1.7.16@analytics-core/gems/railties-4.1.8/lib/rails/commands/commands_tasks.rb:40
       require at org/jruby/RubyKernel.java:1065
        (root) at script/rails:6

下面是我的jruby版本信息

jruby -v
jruby 1.7.16 (1.9.3p392) 2014-09-25 575b395 on Java HotSpot(TM) 64-Bit Server VM 1.8.0_101-b13 +jit [linux-amd64]

我的 rails 版本是 4.1.8 。请帮助我使用 rails.

在 Jruby 应用程序中启动服务器

谢谢,

Bundler 1.13.1 有一个问题导致了这个 - 基本上他们移植了 require 方法,而在 JRuby 1.7 中,一个可见性错误因此使 Kernel::require 私有。

3 件事你可以做:

  1. 将 Kernel.require 可见性更改为 public(加载 Bundler 后)
  2. 降级到 Bundler 1.12
  3. 升级到 JRuby 1.7.26(尚未发布)