5

JRuby Heroku ビルドパック (https://github.com/jruby/heroku-buildpack-jruby) を使用して簡単なテスト アプリケーションを実行しようとしています。

ただし、C 拡張の gem はコンパイルできないようです。たとえば、「git push heroku」を実行すると、C 拡張なしの gem は正常にインストールされますが、その後...

   Using activerecord (3.1.3) 
   Using activeresource (3.1.3) 
   Using bouncy-castle-java (1.5.0146.1) 
   Using bson (1.7.0) 
   Installing bson_ext (1.7.0) with native extensions 
   Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

           /tmp/build_10vcxrs9ayvxf/jruby/bin/jruby extconf.rb 
   NotImplementedError: C extension support is not enabled. Pass -Xcext.enabled=true to JRuby or set JRUBY_OPTS or modify .jrubyrc to enable.

      (root) at /tmp/build_10vcxrs9ayvxf/jruby/lib/ruby/shared/mkmf.rb:8
     require at org/jruby/RubyKernel.java:1019
      (root) at /tmp/build_10vcxrs9ayvxf/jruby/lib/ruby/shared/rubygems/custom_require.rb:1
      (root) at extconf.rb:1


   Gem files will remain installed in /tmp/build_10vcxrs9ayvxf/vendor/bundle/jruby/1.9/gems/bson_ext-1.7.0 for inspection.
   Results logged to /tmp/build_10vcxrs9ayvxf/vendor/bundle/jruby/1.9/gems/bson_ext-1.7.0/ext/cbson/gem_make.out
   An error occurred while installing bson_ext (1.7.0), and Bundler cannot continue.
   Make sure that `gem install bson_ext -v '1.7.0'` succeeds before bundling.
   Dependencies installed

上記のアドバイスを見て、JRuby ビルドパックの修正版を作成しました

このビルドパックと元のビルドパックの唯一の違いは、JRUBY_OPTS を次のように設定したことです。

JRUBY_OPTS="--1.9 -Xcext.enabled=true -J-Xmx400m"

ただし、これはまったく違いがないようで、まだ同じエラーが発生しています。

ヒントはありますか?ビルドパックのどこかに .jrubyrc ファイルを追加することは可能ですか?

4

2 に答える 2

1

カスタマイズされた build-pack をセットアップする代わりに、単にJRUBY_OPTSを構成する必要があります。

heroku config:add JRUBY_OPTS="--1.9 -Xcext.enabled=true -J-Xmx400m"

そうは言っても、JRubyでC-extを使用するのはおそらく悪い考えです

BSON gem (ネイティブの JRubyバージョンがある) のため、C-ext は絶対に必要ありません。Gemfileを編集したり、() を JRuby でローカルに再バンドルしたりrm Gemfile.lock && bundleすることで、これが解決される可能性があります ...

于 2014-01-26T11:52:42.963 に答える
0

C拡張なしでインストール

途中で、C 拡張なしで json をインストールするだけです。C拡張はオプションなので可能です。これは C 拡張の bson よりも遅いことに注意してください。これは問題になる可能性があります。ソース

Ruby — オプションの C 拡張機能付き

チケットを開く

ほとんどすべての gem (ネイティブの依存関係を持つものも含む) は、Bundler を使用してインストールできます。Heroku にインストールできない特定の gem がある場合は、サポート チケットを送信してください。

ここでサポートチケットを開くことができます

于 2013-05-14T10:18:15.637 に答える