Установка драгоценных камней JRuby с Mina

Я пытаюсь развернуть приложение на JRuby с Mina, но один драгоценный камень не устанавливается, и на самом деле его вообще не следует устанавливать...

Драгоценный камень — unf_ext, и он зависит от Mechanize. Если я подключаюсь к серверу по 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

Итак, как сделать так, чтобы упаковщик устанавливал все красиво при запуске через Mina?


person davidhq    schedule 24.07.2014    source источник


Ответы (2)


некоторые из ваших объявленных гемов (в Gemfile.lock должно быть указано, какие именно) зависят от гем-файла unf_ext, который использует собственные расширения C. вам нужно будет каким-то образом избежать этого драгоценного камня (например, с помощью платформы: :mri, как вы это делали с другими) с JRuby. детали зависят от проблемного драгоценного камня и того, сколько его вам нужно, например. если это только для разработки, просто переместите его в группу :development и bundle --without development

person kares    schedule 25.07.2014
comment
На самом деле гем Mechanize зависит от unf_ext ... но при установке на JRuby он не должен нуждаться в этом ... Я думаю, что я не должен перемещать Mechanize в platform: :jruby, потому что он работает на обоих, просто с разными зависимостями. - person davidhq; 25.07.2014
comment
Я понял это... ответ выше. - person davidhq; 25.07.2014

Оказывается, у Gemfile.lock не было вычислено зависимостей для JRuby, потому что я использую MRI для разработки. Я переключился на JRuby локально и запустил bundle install, чтобы сгенерировать правильную информацию в Gemfile.lock, и зафиксировал ее... теперь все устанавливается нормально.

person davidhq    schedule 25.07.2014