あなたは、重複した宝石は、JRubyの&MRIのためにインストールしなければならないのですか?
-
16-09-2019 - |
質問
私はJRubyとルビー(MRI)がインストールされています。一度これらのプラットフォームごとに - 私が二回宝石をインストールする必要があると思われます。これは必要ですか私はそれが間違っているのでしょうか?私はMRI用レールの宝石をインストールした後、私はそれにはJRubyを指摘している必要があります、または私もコールすることが必要だった:「JRubyの-S宝石がレールを取り付ける」
解決
あなたはGEM_HOMEを設定した場合、あなたの宝石のインストールを共有することができます。
他のヒント
あなたが持っているルビーのインストールをそれぞれ異なるために宝石をインストールする必要があります。
いくつかの宝石は、例えば、特定のプラットフォームをターゲット雑種(MRIの1とJRubyの1があります)。また、JRubyのは、彼らが(ほとんどがいない - まだ)FFIを使用しない限り、ネイティブ拡張(すなわち、Cコード)を持つ宝石を使用することはできません。
個人的に私はMRIやJRubyのための別の宝石のリポジトリを持っています。問題を追跡しようとすると、余分な手間を少しは心の平和の価値があります。
これは、各レポがインストールされているものを見るために非常に簡単です。
jruby -S gem list --local
対。
gem list --local
あなたも、他の1つの宝石のリストを同期するRubyスクリプトを書くことができますが、あなたは、プラットフォーム固有の宝石に注意する必要があるだろう....
私は自分の宝石を作成する際に jimmy_jukebox に、この問題を打つが、両方と私の宝石の作品を作りました。
まず、JRubyのはfork...exec
を処理しない(とさえProcess.respond_to?(:fork)
に誤っ返信)ので、私が代わりにrescue NotImplementedError
をSpoon.spawnp
して使用する必要がありました。
私は、(私の宝石の/ binディレクトリに)作成した実行ファイルペア - play_jukebox
とjplay_jukebox
を。そしてload_jukebox
とjload_jukebox
- 正しいシェバングライン(/usr/bin/env ruby
又は/usr/bin/env jruby
)各
私はより良い方法を知ってみたいです。しかし、私はむしろ、複数の宝石を維持し、配布するよりも、単一の宝石の中にすべてを処理したい。