从菜谱全局覆盖厨师属性

时间:2016-10-27 02:46:52

标签: ruby chef chef-recipe rbenv

我们正在使用厨师使用rbenv和ruby-build在我们的流浪设置中管理Ruby版本。我们想要的一个特性,即使rbenv有点拒绝实现它,就是对ruby版本进行“模糊”版本匹配(例如将1.9.3转换为1.9.3-p123)。

我希望在一个独立的配方中透明地处理它,它可以放在run_list中的ruby-build和rbenv之间。我的代码“工作”(根据bucket.upload("foo/1.jpg", (err, file) ...的输出确定最新匹配的ruby版本),但是在运行rbenv cookbook时不会保留更改,所以我认为它们是我的cookbook的本地。有没有办法在运行期间全局更新属性?

我应该补充一点,我不熟悉厨师。这超出了我通常工作的领域。我知道这可能是一个奇怪的用例,如果我想要做的是真正令人震惊的,那么什么是更好的方法来实现我想要的呢?

以下是我目前食谱的概要:

ruby-build --definitions

1 个答案:

答案 0 :(得分:0)

我已经通过使用我的食谱作为rbenv食谱的包装来解决这个问题。我将上面的逻辑移动到默认属性文件中,并使用include_recipe包含我自己的原始配方。出于某种原因,新属性仍未被提取,因此我将原始值移至node[:rbenv_wrapper][:rubies],并使用overridenode[:rbenv][:rubies]中设置新值,之后所有内容按预期工作。