2011-06-22 13 views
7

私はいくつかのルビーコードを宝石に詰めます。私は他のコードで宝石のコードを参照したいと思います。 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ファイルを直接参照できるのでしょうか?

+0

通常、「ローカルジェム」という用語は、別のウェブサイトからダウンロードするのではなく、ローカルでコンパイルしてインストールしたものを意味します。あなたがやっていることを行うのではなく、ローカルで宝石をコンパイルしてインストールすることを考えましたか? –

+0

実際、.gemファイルは自分で作成したものです。他のコードと簡単に共有できるようにするために、その.gemファイルにルビコードをいくつか入れました。 .gemファイルにはlibディレクトリがあります。私はそれがjavaのような瓶のようになると思っていた。私はルビーがそれらをすべてパッケージから取り出すのではなく、そのパッケージファイルを見ることができると思います。混乱することに、バンドラーは実際にパッケージ内のソースを見つけます。 load_pathはパッケージ内のディレクトリをサポートしていないようです。 – user810923

+0

ところで、bundlerは特定のパスの.gemファイルを見つけましたが、.gemファイルがシステムのgemsetにインストールされていなければ、ベンダー/キャッシュに.gemをキャッシュしません。 – user810923

答えて

7

いいえ、.gemファイルを直接参照することはできません。

用語では、「開梱されていない」宝石を使用する必要があります。

1

/foo/bar/lib/と(GEM)ディレクトリ

:path => '/foo/bar/' 

は、我々は、ローカル(しないシステム全体の)宝石場所を作りました。そのディレクトリに組み込まれた宝石を入れて「...宝石のインストール」、我々はそれから行うことができ、それらを設定することで

GEM_HOME=/path/to/rubygems-1.3.4 
RUBYLIB=/path/to/rubygems-1.3.4/lib/ 

、およびそれらを見つけるためにどこルビーは知っている:私たちは、これらの環境変数を設定します。

関連する問題