0

我正在尝试使用 Mina 在 JRuby 上部署一个应用程序,但是一个 gem 没有安装,实际上它不应该首先安装......

gem 是unf_ext,它是一个机械化依赖项。如果我通过 SSH 连接到服务器并尝试安装Mechanize,它会毫无问题地安装,unf结果只会安装,而不是unf_ext.

错误:

Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension. 

       /home/linkrecover/.rbenv/versions/jruby-1.7.13/bin/jruby extconf.rb  
   NotImplementedError: C extension support is not enabled. Pass -Xcext.enabled=true to JRuby or set JRUBY_OPTS. 

      (root) at /home/linkrecover/.rbenv/versions/jruby-1.7.13/lib/ruby/shared/mkmf.rb:8 
     require at org/jruby/RubyKernel.java:1065 
      (root) at /home/linkrecover/.rbenv/versions/jruby-1.7.13/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:1 
      (root) at extconf.rb:1 


   Gem files will remain installed in /var/www/lr/tmp/build-14062262733806/vendor/bundle/jruby/1.9/gems/unf_ext-0.0.6 for inspection. 
   Results logged to /var/www/lr/tmp/build-14062262733806/vendor/bundle/jruby/1.9/gems/unf_ext-0.0.6/ext/unf_ext/gem_make.out 
   An error occurred while installing unf_ext (0.0.6), and Bundler cannot continue. 
   Make sure that `gem install unf_ext -v '0.0.6'` succeeds before bundling. 

我的 Gemfile:https ://gist.github.com/davidhq/09d84bc79683b9d3332e

那么如何让 bundler 在通过 Mina 运行时很好地安装所有东西呢?

4

2 回答 2

0

您声明的一些 gem(Gemfile.lock应该告诉哪一个)取决于unf_ext使用本机 C 扩展的 gem。您将需要以某种方式避免使用 JRuby 使用该 gem(例如,使用平台::mri,就像您对其他人所做的那样)。详细信息取决于有问题的 gem 以及您需要多少,例如,如果它仅用于开发,只需将其移动到一个组 :developmentbundle --without development

于 2014-07-25T10:32:39.847 回答
0

事实证明,Gemfile.lock因为我正在使用 MRI 进行开发,所以没有发现 JRuby 的依赖关系。我在本地切换到 JRuby 并运行bundle install以生成正确的信息Gemfile.lock并提交它......现在一切都安装好了。

于 2014-07-25T11:46:10.720 回答