2017-10-09 7 views
1

私はいくつかのプライベート宝石を開発していますが、私はPATH/GEM_PATHやBundler/RVMインストールフローを正しく理解していないと思います。カスタム宝石を開発するときにBundlerのRakefileインストールタスクを使用してgemをインストールできない

私は2つの宝石を持つリポジトリを持っています(簡略化のためA & B)。私はthis bundler tutorialのガイドラインに従って、足場+を使って宝石を開発しました。

Bundlerプロジェクトのおかげで、rake buildrake installrake install:localrake releaseのようないくつかのRakefileタスクがあります。これらの宝石の私有の性質のため、私はそれらをRubyGemsにリリースすることはできません(私たちはRubygemsをホストしていません)。

私のマシンは、私が何をしたいのかルビーのバージョンを管理するためにRVMを使用し、バンドラーのバージョン1.15.1

されていますは理想的な私たちは、それぞれにcdなり、プロジェクトを試して新しいマシン/開発者を想定すると、サブフォルダ(現在2、gem A、gem B)を実行してrake installを実行した後、現在のユーザに対してシステム全体で利用可能な宝石を用意する必要があります。何が起こっている

宝石が構築されていると正常に動作しますが、それらはAがサブフォルダAと宝石Bの内側にのみ使用可能です各宝石すなわち宝石は、サブフォルダB.

内部のみ利用可能であるのサブフォルダ内でのみ利用可能です

私が試したこと:rake build/install/install:localの後に、pkgの下に新しい.gemファイルが生成されました。私は手動でgem install pkg/A.gemgem install --local pkg/A.gemgem install --local --user-install pkg/A.gemを使って "コンパイル済み"ファイルをインストールしようとしましたが、成功しませんでした。 (there are plenty of SO questions/answers about this

これはPATH変数と関係がありますが、私が前に言ったように、管理方法を完全には理解していません。これらのコマンドから次の結果が得られます。

# Our gem 
> gem which A 
/home/ubuntu/.rvm/gems/ruby-2.4.0/gems/A-0.1.8/lib/A.rb 

# Pry, available globally 
> gem which pry 
/home/ubuntu/.rvm/gems/ruby-2.4.0/gems/pry-0.11.1/lib/pry.rb 

私は紛失してしまいました。より良いプライベート宝石のインストールの流れの提案を聞くためにも開きます:)

+0

gemをグローバルジェムセットにインストールするには、 'rvm @global do gem install --local pkg/A.gem' – DiegoSalazar

+0

で修正してください。私は 'rvm @global install gem install pkg/A-0.1.8.gem'を実行し、' 'gem which A'は'/home/ubuntu/.rvm/rubies/ruby​​-2.4.0/bin/gem'を出力します。インストールされた宝石は引き続き各ディレクトリ内でのみ動作します。レポのルートディレクトリから次のように実行しようとしました。(成功せずに): 'rvm @global do gem install A/pkg/A-0.1.8.gem' – Fdo

答えて

1

はい、それはあなたと関係がありますPATH変数。あなたのインストールは良いと思われる。

私が最初にあなたの宝石インストールパスを肯定するためにあなたに助言する:ダブルはその存在を確認するために、PATHをチェックしても宝石がrake installからにインストールしてしまったところGEMのホームでもあることを確認し

echo $GEM_HOME 

echo $PATH 

ない場合は、あなたのパスにそれを入れて、あなたはこのようなもので問題ないはずです。

echo PATH=$PATH:$GEM_HOME >> ~/.bashrc 
source ~/.bashrc 
1

リンクしたガイドに従って、あなたの宝石を構築してください。あなたは宝石のファイルで終わるべきです。これを適切に配布してください(私はrsync/crontabを使って新しい宝石のバージョンをダウンロードしますが、何かが行きます)。ユーザーは次のようにgemをインストールできます。

gem install --user-install /path/to/your/file.gem 

これで、gemがユーザーの~/.gem/ruby/<version>/gems/<your-gem-name>ディレクトリにインストールされます。

空の宝石(食べ物、その例のガイドのように)で試してみるとうまくいきます。しかし、--user-installパラメータを指定しないと、システムruby dir(/ usr/lib/ruby​​/gems ...)にインストールしようとします。

関連する問題