7

ruby の最新のクックブックはありますか? opscode のクックブック サイトで見つけられませんでした。つまり、ruby 1.9.3 または 1.9.2p280 です。

4

3 に答える 3

4

Carlo Zottman のruby​​ 1.9.x クックブックの更新を終えたところです(プル リクエストを書く前に、ランチを食べているときにこの質問に気づきました、笑...)

唯一の依存関係は、opscode クックブック サイトからの標準のビルドに不可欠な apt クックブックです。

このようなクックブックがいつ必要になるかについての議論については、rbenv クックブック (およびその他のさまざまなもの) を使用する前に、12.04.01 vagrant ボックスで ruby​​ 1.8 から ruby​​ 1.9 にアップグレードするために使用しています。

rbenv クックブックを使用して 1.9.3 をインストールできるようにする必要があることは理解していますが、それで数時間うまくいかなかった後、とにかくソースのインストールに満足していることに気付きました。脆くない。また、vagrant ユーザーとして rbenv install 1.9.3 を実行するシェル スクリプトは簡単に作成できました。

アップデート

依存関係がさらに少ない代替アプローチを見つけました (はい!) 私はFletcher Nichol のクックブックを使用しています:

  • opscodeコミュニティ ページの ruby​​_build
  • githubのchef-rbenv (opscodeのrbenvクックブックとは異なります)

もちろん、厳密には ruby​​_build を使用して好みの 1.9 をインストールして停止することもできますが、rbenv も必要です。

私のセットアップからいくつかのスニペットを含めました (もちろん、Berksfile と Vagrantfile には他にもありますが、これらは関連する部分ですchef-rbenv) rbenv。自分自身を 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 の答えは同じもののシェフ サーバー バージョンである可能性が高いことに気付いたということです。これまでchef-soloしか使ったことがないのでよくわかりません。

于 2012-08-26T19:34:14.743 に答える
3

シェフはRubyの上に構築されているため、Rubyのシステムバージョンを更新するためのものを見つけることができるかどうかはわかりません.

しかし、RBenv や RVM などの Ruby バージョン マネージャー用の Chef 料理本 (これは rbenv 用これは RVM用) は確かに見たことがあります。これはサーバー用ですか、それとも OSX dev ボックス用ですか? 後者の場合は、 Smeagolがマシンを構成する際の非常に便利なショートカットであることがわかりました。

于 2012-06-20T21:24:48.147 に答える
0

ruby_build と rbenv の 2 つのクックブックを使用するのが最も簡単だと思います。あなたの役割 ( <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'
    ]
  }
)

このロールを実行リストに追加すると (できれば、これらの ruby​​ を必要とする他のロールの前に) 実行リストに追加できます。

実行リストを編集するには: knife node edit <node name>

役割を更新することを忘れないでください。knife role from file role_name.rb

最後に、rubyenv は rvm よりもわずかにクリーンな ruby​​ の管理方法である可能性があります。

于 2012-08-01T23:52:52.830 に答える