7

有最新的 ruby​​ 食谱吗?我在 opscode 食谱网站上找不到。即红宝石 1.9.3 或 1.9.2p280。

4

3 回答 3

4

我刚刚完成了Carlo Zottman 的ruby​​ 1.9.x 食谱的更新(在吃午饭的时候注意到了这个问题,在写一个拉取请求之前,哈​​哈......)

唯一的依赖是来自 opscode cookbook 站点的标准 build-essential 和 apt 食谱。

至于何时可能需要这样一本食谱的讨论,在使用 rbenv 食谱(以及其他各种食谱)之前,我正在使用它在我的 12.04.01 vagrant 盒子上从 ruby​​ 1.8 升级到 ruby​​ 1.9。

我意识到我应该能够使用 rbenv cookbook 来安装 1.9.3,但是在尝试了几个小时没有成功之后,我意识到无论如何我对源代码安装更满意,因为它使我的整个食谱堆栈不那么脆。而作为流浪用户的 rbenv 安装 1.9.3 的 shell 脚本编写起来很简单。

更新

我找到了一种依赖更少的替代方法(是的!)我正在使用Fletcher Nichol 的食谱:

严格来说,当然,您可以只使用 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

流浪文件:

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]"
  ]
}

最后的评论是,一旦我想出了解决方案,我意识到维克多的答案很可能是同一件事的厨师服务器版本。到目前为止,我只使用过 chef-solo,所以我不确定。

于 2012-08-26T19:34:14.743 回答
3

我不确定您是否会找到一个用于更新 Ruby 系统版本的工具,因为 chef 是建立在 Ruby 之上的,因此会在运行时进行自我更新,我不确定这是否可能。

但是,我肯定看过针对 RBenv 和 RVM 等 Ruby 版本管理器的 Chef 食谱,例如这本用于 rbenv,而这本用于 RVM。这是用于服务器还是 OSX 开发盒?如果是后者,那么我发现Smeagol在配置机器时是一个非常方便的快捷方式。

于 2012-06-20T21:24:48.147 回答
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

最后,与 rvm 相比,rubyenv 可能是一种更简洁的 rubies 管理方式。

于 2012-08-01T23:52:52.830 回答