Chef で gem バイナリを参照する方法を理解しようとしていますが、gem は...1.9.1
ではなく、常にディレクトリにロードされることに気付きました。1.9.3
誰でもこれを説明できますか?
Ruby 2 に移行した場合、これは変更されますか? 1.9.1
変更する場合はハードコーディングしたくない....
ありがとう!
Chef で gem バイナリを参照する方法を理解しようとしていますが、gem は...1.9.1
ではなく、常にディレクトリにロードされることに気付きました。1.9.3
誰でもこれを説明できますか?
Ruby 2 に移行した場合、これは変更されますか? 1.9.1
変更する場合はハードコーディングしたくない....
ありがとう!
シェフでは、rubygems が実行可能ファイルを作成するディレクトリを で見つけることができますnode["languages"]["ruby"]["bin_dir"]
。したがって、これらのパスは変更される可能性があるため、レシピでハードコーディングしないでください。
あなたの正確な質問について: Ruby >= 1.9.1 および < 2.0.0 では、 rubygems は gems を1.9.1
ディレクトリにインストールして、 1.9.1 ABIの使用を示します。その意図は、この ABI を使用して異なる Ruby バージョン間で互換的に使用できるようにコンパイルされた gem です。しかし、実際には、これはより困難であることが判明しました...
Ruby 2.0.0 はこの2.0.0
ディレクトリを使用します。繰り返しになりますが、パスをハードコードするのではなく、node 属性を使用する必要があります (rubygem 独自の機能を使用して OHAI によって設定されます)。
いつでも使用できます:
$ gem env gemdir
また
$ gem env gempath
gemsディレクトリを取得します。