是否有最新的红宝石食谱?我无法在opscode cookbook网站上找到一个。即红宝石1.9.3或1.9.2p280。
答案 0 :(得分:4)
我只是finished updating Carlo Zottman的ruby 1.9.x cookbook(在吃午餐时注意到这个问题,在写一个拉动请求之前,大声笑......)
唯一的依赖是来自opscode cookbook网站的标准build-essential和apt cookbook。
关于何时可能需要这样的食谱的讨论,我使用rbenv在之前使用它从我的12.04.01流浪盒上的ruby 1.8升级到ruby 1.9食谱(和其他各种)。
我意识到我应该能够使用rbenv cookbook来安装1.9.3,但是经过几个小时的不成功,我意识到我对源安装感到更高兴,因为它使我的整个食谱堆栈不那么脆弱。并且rbenv安装1.9.3的shell脚本作为流浪者用户很容易写。
我找到了一种替代方法,它具有更少的依赖性(是的!)我正在使用Fletcher Nichol's个烹饪书:
严格来说,当然,你可以使用ruby_build来安装你喜欢的1.9并停止,但我也想要rbenv。
我已经在我的设置中包含了一些片段(当然,还有更多的Berksfile和Vagrantfile,但这些是相关的部分。)唯一真正棘手的部分是chef-rbenv
食谱的本地名称必须是rbenv
,如果你想使用任何包含来自食谱的其他现成食谱的现成食谱,因为它将自己称为rbenv。 Berkshelf做了那件小事。
group :ruby do
cookbook 'ruby_build'
cookbook 'rbenv', git: 'https://github.com/fnichol/chef-rbenv'
end
Vagrantfile:
config.vm.provision :chef_solo do |chef|
chef.cookbooks_path = 'chef/cookbooks'
chef.roles_path = 'chef/roles'
chef.json = {
'rbenv' => {
'global' => '1.9.3-p194',
'rubies' => [ '1.9.3-p194' ],
'gems' => {
'1.9.3-p194' => [
{ 'name' => 'bundler' }
]
}
}
}
chef.add_role 'ruby'
end
厨师/角色/ ruby.json:
{
"name": "ruby",
"description": "Install ruby and rbenv",
"chef_type": "role",
"json_class": "Chef::Role",
"run_list": [
"recipe[ruby_build]",
"recipe[rbenv::system]"
]
}
最后的评论是,一旦我找到了解决方案,我意识到Victor的答案很可能是同一件事的厨师服务器版本。到目前为止我只使用厨师独奏,所以我不确定。
答案 1 :(得分:3)
我不确定你是否会找到一个用于更新Ruby系统版本的,因为chef是建立在Ruby之上的,因此在运行时会自行更新,我不确定是否可行。< / p>
但是,我确实看到过RBenv和RVM等Ruby版本管理器的Chef cookbook,例如this one for rbenv和this one for RVM。这是服务器还是OSX开发箱?如果它是后者,那么我发现Smeagol在配置机器时非常方便。
答案 2 :(得分:0)
我认为最简单的方法是使用两本烹饪书:ruby_build和rbenv。在你的角色(<proj>/roles/role_name.rb
)中:
name "your-role-name"
description "All the shelves!"
run_list(
"recipe[ruby_build]",
"recipe[rbenv::system]"
)
override_attributes(
'rbenv' => {
'global' => '1.9.2-p280',
'rubies' => [
'1.9.2-p280'
]
}
)
将此角色(最好在需要这些红宝石的其他角色之前)添加到运行列表中应该这样做。
编辑运行列表:
knife node edit <node name>
不要忘记更新角色! knife role from file role_name.rb
最后,rubyenv可能比rvm更清洁地管理红宝石。