0
私は、load_current_valueブロックに "require"する前にgemをインストールする必要があるChef 12.5スタイルのカスタムリソースを持っています。私はchef_gem
リソースを使用しようとしましたが、私がそこで使用するときはchef_gemにNoMethodErrorがあります。シェフ12.5スタイルのカスタムリソース:load_current_valueブロックに必要な宝石をインストールしますか?
load_current_value do
Chef::Resource::ChefGem.new 'inifile' do
compile_time true
end
require 'inifile'
# ... load_current_value code
end
を...しかし、明示的にChef::Resource::ChefGem.new
を呼び出すことは間違っていると思われる、または少なくとも "無粋。":これは動作します
これは宝石をアクションに利用できるようにします。便利です。しかし、chef_gemをload_current_valueブロックに(または先に)インストールするより適切な方法があるのだろうか?私が正しくリコールシェフ12.8からそれがspecify gems in metadata.rbに可能なら
はい、ありがとうございます。それは正解です。これは一般的なケースで動作し、私の '' load_current_value''問題を解決します。 このように '' gem 'mysql2'''を使用するとクラッシュしてしまいます(パッケージの依存関係のために一時的な問題が発生する可能性があります)ので、メタデータソリューションを使用して放棄しました。 –
問題は、シェフが起動したときに宝石をインストールすることです。これは、コンパイラの前か、mysqlライブラリが利用可能である(レシピを介してインストールすると仮定した場合)。これは発注の難しさにつながります。 – coderanger
..それはあなたのcheffedホストがすべてrubygems.orgやad-hoc gemのダウンロード用のプロキシを打つ必要があります。 セキュリティの問題は面白いです。 – user2066657