2

JRubyとRuby(MRI)をインストールしています。これらのプラットフォームごとに1回ずつ、gemを2回インストールする必要があるようです。これは必要ですか、それとも間違っていますか?MRI用のrailsgemをインストールした後、JRubyをポイントする必要がありましたか、それとも「jruby -Sgeminstallrails」と呼ぶ必要がありましたか。

4

4 に答える 4

4

所有している ruby​​ のインストールごとに gem をインストールする必要があります。

于 2009-04-25T10:28:33.663 に答える
3

GEM_HOMEを設定すると、gemのインストールを共有できます。

于 2009-04-26T03:58:45.243 に答える
1

一部の gem は特定のプラットフォームをターゲットにしています (Mongrel など) (MRI と JRuby があります)。また、JRuby は、FFI を使用しない限り、ネイティブ拡張機能 (つまり C コード) を持つ gem を使用できません (ほとんどの場合、まだ使用されていません)。

個人的には、MRI と JRuby 用に別々の gem リポジトリを持っています。問題を突き止めようとするときは、少し手間がかかるだけで安心できます。

各レポがインストールしたものを確認するのは非常に簡単です。

jruby -S gem list --local

対。

gem list --local

1 つの gem リストを別の gem リストに同期する Ruby スクリプトを作成することもできますが、プラットフォーム固有の gem には注意する必要があります。

于 2009-05-04T05:23:24.117 に答える
1

宝石jimmy_jukeboxを作成するときにこの問題に遭遇しましたが、私の宝石は両方で動作しました。

まず、JRuby は処理しないfork...exec(さらには に間違って応答するProcess.respond_to?(:fork)) ため、代わりにrescue NotImplementedError使用する必要がありました。Spoon.spawnp

次に、(私の宝石の /bin ディレクトリに) ペアの実行可能ファイルを作成しました --play_jukeboxjplay_jukebox; and load_jukeboxand jload_jukebox-- それぞれ正しいシバン行 (/usr/bin/env rubyまたは/usr/bin/env jruby)。

もっと良い方法を知りたいです。しかし、私は、複数の gem を維持して配布するよりも、1 つの gem 内ですべてを処理したいと考えています。

于 2011-08-22T17:10:23.453 に答える