3

Chef で gem バイナリを参照する方法を理解しようとしていますが、gem は...1.9.1ではなく、常にディレクトリにロードされることに気付きました。1.9.3

誰でもこれを説明できますか?

Ruby 2 に移行した場合、これは変更されますか? 1.9.1変更する場合はハードコーディングしたくない....

ありがとう!

4

2 に答える 2

1

シェフでは、rubygems が実行可能ファイルを作成するディレクトリを で見つけることができますnode["languages"]["ruby"]["bin_dir"]。したがって、これらのパスは変更される可能性があるため、レシピでハードコーディングしないでください。

あなたの正確な質問について: Ruby >= 1.9.1 および < 2.0.0 では、 ruby​​gems は gems を1.9.1ディレクトリにインストールして、 1.9.1 ABIの使用を示します。その意図は、この ABI を使用して異なる Ruby バージョン間で互換的に使用できるようにコンパイルされた gem です。しかし、実際には、これはより困難であることが判明しました...

Ruby 2.0.0 はこの2.0.0ディレクトリを使用します。繰り返しになりますが、パスをハードコードするのではなく、node 属性を使用する必要があります (rubygem 独自の機能を使用して OHAI によって設定されます)。

于 2013-03-02T22:34:39.343 に答える
0

いつでも使用できます:

$ gem env gemdir

また

$ gem env gempath

gemsディレクトリを取得します。

于 2013-03-02T20:56:25.137 に答える