【发布时间】:2016-10-27 02:46:52
【问题描述】:
我们正在使用 chef 来管理我们的 vagrant 设置中的 Ruby 版本,使用 rbenv 和 ruby-build。尽管 rbenv 明确拒绝实现它,但我们想要的一个功能是为 ruby 版本提供“模糊”版本匹配(例如,将 1.9.3 转换为 1.9.3-p123)。
我希望在一个独立的配方中透明地处理这个问题,该配方可以放置在 run_list 中的 ruby-build 和 rbenv 之间。我的代码“有效”(根据ruby-build --definitions 的输出确定最新的匹配 ruby 版本),但是在运行 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
【问题讨论】:
标签: ruby chef-infra chef-recipe rbenv