【问题标题】:Rails app with JRuby not working带有 JRuby 的 Rails 应用程序无法正常工作
【发布时间】:2014-01-29 19:46:13
【问题描述】:

我有一个在 Ubuntu 上创建的 Rails 应用程序。我想在 Mac 上运行它,但在安装包并运行 rails s 后,我收到以下错误:

LoadError: 加载错误: sqlite3/sqlite3_native -- java.lang.UnsatisfiedLinkError:加载垫片库失败,错误: dlopen(/Users/home/.rvm/rubies/jruby-1.7.4/lib/native/Darwin/libjruby-cext.dylib, 10): 在 org/jruby/RubyKernel.java:1054 处找不到图片要求
(根)在 /Users/home/.rvm/gems/jruby-1.7.4/gems/sqlite3-1.3.8/lib/sqlite3.rb:6 需要在 org/jruby/RubyKernel.java:1054 (root) 处 /Users/home/.rvm/gems/jruby-1.7.4@global/gems/bundler-1.3.5/lib/bundler/runtime.rb:1 org/jruby/RubyArray.java:1617 中的每个都需要 /Users/home/.rvm/gems/jruby-1.7.4@global/gems/bundler-1.3.5/lib/bundler/runtime.rb:72 org/jruby/RubyArray.java:1617 中的每个都需要 /Users/home/.rvm/gems/jruby-1.7.4@global/gems/bundler-1.3.5/lib/bundler/runtime.rb:70 要求在 /Users/home/.rvm/gems/jruby-1.7.4@global/gems/bundler-1.3.5/lib/bundler/runtime.rb:59 要求在 /Users/home/.rvm/gems/jruby-1.7.4@global/gems/bundler-1.3.5/lib/bundler.rb:132 需要在 org/jruby/RubyKernel.java:1054 (root) 处 /Users/home/workSpace/RubyOnRails/sample_app/config/application.rb:13 在 /Users/home/.rvm/gems/jruby-1.7.4/gems/railties-3.2.8/lib/rails/commands.rb:1 中点击 org/jruby/RubyKernel.java:1860 (root) 需要在 org/jruby/RubyKernel.java:1054 (root) at script/rails:6

我的Gemfile

来源'https://rubygems.org'

gem 'rails', '3.2.8'

宝石'sqlite3'

group :assets do gem 'sass-rails', '~> 3.2.3' gem 'coffee-rails', '~> 3.2.1'

gem 'uglifier', '>= 1.0.3' 结束

gem 'jquery-rails'

gem 'execjs'

group :test, :development do gem "rspec-rails", "~> 2.0" end

宝石'spork'

宝石'webrat'

gem 'heroku'

我正在使用jruby 1.7.4 (1.9.3p392) 2013-05-16 2390d3b on Java HotSpot(TM) 64-Bit Server VM 1.7.0_15-b03 [darwin-x86_64]Rails 3.2.8

【问题讨论】:

  • 你也在 Ubuntu 上使用 JRuby 吗?
  • 不,我没用过!

标签: ruby-on-rails ruby-on-rails-3 sqlite gem jruby


【解决方案1】:

JRuby 1.7.x 不再支持 ruby​​ C 扩展。请参阅此 Jira ticket

【讨论】:

    【解决方案2】:

    问题源于您尝试使用依赖于 C 扩展的 Ruby gem。来自JRuby wiki

    1.6 之前的 JRuby 版本不支持 Ruby C 扩展,并且 即使在 1.6 中,支持仍处于“开发中”并已考虑 实验性的。从 1.7 开始,它已被禁用,并且可能会 删除。

    具体来说,错误消息指出:dlopen(/Users/home/.rvm/rubies/jruby-1.7.4/lib/native/Darwin/libjruby-cext.dylib, 10): image not found。这是尝试加载未找到的 JRuby C 扩展包装器。我不确定这里的确切原因,但也许它没有安装。

    在我看来,您有两个主要选择:

    1. 安装常规 MRI 而不是 JRuby,就像在 Ubuntu 上一样。然后,您可以根据需要使用带有 C 扩展的 gem。
    2. 来自same wiki:将activerecord-jdbc-adapter 与jdbc-sqlite3 一起使用。如果您的应用程序需要,这将允许您使用 JRuby。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-21
      • 1970-01-01
      • 2012-01-02
      相关资源
      最近更新 更多