2016-10-27 10 views
0

rbenvとruby-buildを使用して、迷惑メールのバージョンを管理するためにシェフを使用しています。 rbenvがそれを実装することを拒否したとしても、ルビバージョン(例えば、1.9.3から1.9.3-p123への変換)では "あいまいな"バージョンのマッチングが必要です。料理本からグローバルにシェフ属性を無効にする

これは、run_listのruby-buildとrbenvの間に置くことができるスタンドアロンレシピで透過的に処理したいと思います。私のコードは "うまくいく"(ruby-build --definitionsの出力に基づいて最新の一致するルビーバージョンを決定する)が、rbenv料理ブックを実行しても変更は保持されないので、それらは自分の料理ブックのローカルであると仮定します。実行中に属性をグローバルに更新する方法はありますか?

私はシェフに慣れていないと付け加えます。これは私が通常働いているドメインの外にあります。これはおそらく奇妙な使用事例であり、私がしようとしていることが本当に面白いなら、私が欲しいものを達成するためのより良い方法は何でしょうか?

original_rbenv_rubies = node[:rbenv][:rubies] 
new_rbenv_rubies = determine_full_ruby_versions original_rbenv_rubies 
node.force_override[:rbenv][:rubies] = new_rbenv_rubies 

答えて

0

私はrbenvの料理のラッパーとしての私の料理の本を使用してこれを解決してきました:

は、ここに私の現在のレシピの概要です。私は上記のロジックをデフォルト属性ファイルに移して、include_recipeを使ってオリジナルのレシピを自分自身で組み込んでいます。何らかの理由で新しい属性がまだ選択されていなかったので、元の値をnode[:rbenv_wrapper][:rubies]に移動し、overrideを使用して新しい値をnode[:rbenv][:rubies]に設定した後、すべてが期待どおりに機能しました。

関連する問題