繁体   English   中英

最新的红宝石厨师食谱

[英]Up-to-date Chef cookbook for ruby

是否有最新的红宝石食谱? 我无法在opscode cookbook网站上找到一个。 即红宝石1.9.3或1.9.2p280。

我刚刚更新了 Carlo Zottman的红宝石1.9.x食谱 (在吃午餐时注意到这个问题,在写一个拉动请求之前,哈​​哈...)

唯一的依赖是来自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的烹饪书:

  • ruby_build从Opscode公司社区页面
  • 来自github的chef-rbenv (与opscode的rbenv cookbook不同)

当然,严格来说,你可以使用ruby_build安装你喜欢的1.9并停止,但我也想要rbenv。

我已经在我的设置中包含了一些片段(当然,还有更多的Berksfile和Vagrantfile,但这些是相关的部分。)唯一真正棘手的部分是chef-rbenv cookbook的本地名称必须是rbenv if你想要使用任何现成的食谱,包括来自食谱的其他现成食谱,因为它将自己称为rbenv。 Berkshelf做了那件小事。

Berksfile

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的答案很可能是同一件事的厨师服务器版本。 到目前为止我只使用过厨师独奏,所以我不确定。

我不确定你是否会找到一个更新Ruby的系统版本,因为厨师是建立在Ruby之上的,因此在运行时会自行更新,我不确定是否可行。

但是,我确实看到过RBenv和RVM等Ruby版本管理器的Chef cookbook,比如rbenv的这个 ,以及RVM的这个 这是服务器还是OSX开发箱? 如果它适用于后者,那么在配置机器时我发现Smeagol是一个非常方便的快捷方式。

我认为最简单的方法是使用两本烹饪书: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更轻松地管理红宝石。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM