私はいくつかのルビーコードを宝石に詰めます。私は他のコードで宝石のコードを参照したいと思います。 Gemfileでは、Gemの名前、バージョン、ローカルパスを指定します。同様:ルビーでローカル宝石を参照するには?
gem 'gemname','0.x', :path => 'RELATIVE_PATH_TO_GEM_FILE'
バンドルした後インストールし、私は
Using gemname (0.x) from source at RELATIVE_PATH_TO_GEM_FILE
を参照してくださいしかし、私は、コードを実行すると、それは宝石のコードを見つけることができません。 LOAD_PATHはABSOLUTE_PATH_TO_GEM_FILE/libを示します。
コードを見つけることができないのも不思議ではありませんが、ABSOLUTE_PATH_TO_GEM_FILEには宝石ファイルしかありません。それは開梱されていません。だからlibディレクトリはありません。
私はgemファイルを自分のシステムにインストールするとすべて正常に動作します。 gemファイルがソースコードファイルに展開されているのがわかります。 しかし、私の質問は、どういうわけかローカルのgemファイルを直接参照できるのでしょうか?
通常、「ローカルジェム」という用語は、別のウェブサイトからダウンロードするのではなく、ローカルでコンパイルしてインストールしたものを意味します。あなたがやっていることを行うのではなく、ローカルで宝石をコンパイルしてインストールすることを考えましたか? –
実際、.gemファイルは自分で作成したものです。他のコードと簡単に共有できるようにするために、その.gemファイルにルビコードをいくつか入れました。 .gemファイルにはlibディレクトリがあります。私はそれがjavaのような瓶のようになると思っていた。私はルビーがそれらをすべてパッケージから取り出すのではなく、そのパッケージファイルを見ることができると思います。混乱することに、バンドラーは実際にパッケージ内のソースを見つけます。 load_pathはパッケージ内のディレクトリをサポートしていないようです。 – user810923
ところで、bundlerは特定のパスの.gemファイルを見つけましたが、.gemファイルがシステムのgemsetにインストールされていなければ、ベンダー/キャッシュに.gemをキャッシュしません。 – user810923