2014-07-24 30 views
0

我试图部署在JRuby与米娜的应用程序,但一个宝石不安装,实际上它不应该被安装在首位...安装JRuby的宝石,米娜

创业板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

那么如何使在通过米娜运行捆绑安装一切很好?

回答

0

你的一些声明的宝石(Gemfile.lock应该告诉哪一个)取决于使用本机C扩展的unf_ext宝石。您需要以某种方式避免使用JRuby(例如,使用平台::mri,就像您对其他人一样)。细节取决于有问题的宝石以及你需要多少宝石,例如如果它仅用于开发简单地把它移动到组:发展bundle --without development

+0

其实机械宝石取决于'unf_ext' ...但是当安装在JRuby上时,它不应该需要......我想我不应该把'Mechanize'移动到'platform :: jruby',因为它对两者都有效,只有不同的依赖关系。 – davidhq

+0

我明白了......上面的答案。 – davidhq

0

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