2013-05-31 2 views
8

迷惑行インストールを試していて、デフォルトのルビーバージョンとして1.9.3-p327が必要です。私は、シェフ・ソロと図書館員を使って迷惑メール機を管理しています。シェフ・ソロのための不具合rbenvにRuby 1.9.3をインストールするNoMethodError loaded_recipe?

私の放浪のファイルプロビジョニングは、この

config.vm.provision :chef_solo do |chef| 
chef.cookbooks_path = "cookbooks" 
chef.add_recipe "apt" 
chef.add_recipe "build-essential" 
chef.add_recipe "git" 
chef.add_recipe "ruby_build" 
chef.add_recipe "rbenv::system" 
chef.add_recipe "rbenv::vagrant" 
chef.add_recipe "sqlite" 
chef.add_recipe "nodejs" 
chef.add_recipe "mysql" 
chef.add_recipe "redisio" 
chef.add_recipe "redisio::install" 
chef.add_recipe "redisio::redis_gem" 
chef.add_recipe "zlib" 
chef.add_recipe "wkhtmltopdf" 

chef.json = { 
    "rbenv" => { 
    "rubies" => [ "1.9.3-p327" ], 
    "global" => "1.9.3-p327", 
    "gems" => { 
     "1.9.3-p327" => [ 
     { "name" => "bundler" } 
     ] 
    } 
    } 
} 
end 

と司書-cheffこの

site 'http://community.opscode.com/api/v1' 

cookbook 'apt' 
cookbook 'git' 
cookbook 'build-essential' 
cookbook 'rbenv', 
    git: 'https://github.com/fnichol/chef-rbenv.git' 
cookbook 'ruby_build' 
cookbook 'sqlite', 
    git: 'git://github.com/opscode-cookbooks/sqlite.git' 
cookbook 'nodejs', 
    git: 'http://github.com/mdxp/nodejs-cookbook' 
cookbook 'mysql', 
    git: 'git://github.com/opscode-cookbooks/mysql.git' 
cookbook 'redisio', 
    git: 'git://github.com/brianbianco/redisio.git' 
cookbook 'zlib', 
    git: 'git://github.com/opscode-cookbooks/zlib' 
cookbook 'wkhtmltopdf', 
    git: 'git://github.com/firstbanco/chef-wkhtmltopdf.git' 

のようなルックスを検索し、これらの二つから私のことができるようにすべきであることをcheffileのように見えます不自然に迷路のファイルを実行すると、シェフのソロにルビーのバージョンを指定しているところが爆発しているように見えます。昨日の午後には働いていたので、誰かがその間に料理本を更新したと思うようになった。私は司書-シェフがインストール呼び出されたときに、それを引っ張り、私はそれが動作するRubyのバージョンを指定するJSONをコメントアウトした場合..

================================================================================ 
Error executing action `install` on resource 'rbenv_ruby[1.9.3-p327] (system)' 
================================================================================ 

NoMethodError 
------------- 
undefined method `loaded_recipe?' for #<Chef::RunContext:0x7f34cf773ed0> 

Cookbook Trace: 
--------------- 

/tmp/vagrant-chef-1/chef-solo-1/cookbooks/rbenv/providers/ruby.rb:88:in `ruby_build_missing?' 
/tmp/vagrant-chef-1/chef-solo-1/cookbooks/rbenv/providers/ruby.rb:43:in `perform_install' 
/tmp/vagrant-chef-1/chef-solo-1/cookbooks/rbenv/providers/ruby.rb:33:in `class_from_file' 

Resource Declaration: 
--------------------- 
# In /tmp/vagrant-chef-1/chef-solo-1/cookbooks/rbenv/recipes/system.rb 

27: else 
28:  rbenv_ruby rubie 
29: end 

Compiled Resource: 
------------------ 
# Declared in /tmp/vagrant-chef-1/chef-solo-1/cookbooks/rbenv/recipes/system.rb:28:in `from_file' 

rbenv_ruby("1.9.3-p327") do 
    retry_delay 2 
    retries 0 
    recipe_name "system" 
    definition "1.9.3-p327" 
    action :install 
    cookbook_name :rbenv 
end 

[2013-05-31T09:55:55+00:00] ERROR: Running exception handlers 
[2013-05-31T09:55:55+00:00] ERROR: Exception handlers complete 
[2013-05-31T09:55:55+00:00] FATAL: Stacktrace dumped to /tmp/vagrant-chef-1/chef-stacktrace.out 
[2013-05-31T09:55:55+00:00] FATAL: NoMethodError: rbenv_ruby[1.9.3-p327] (system) (rbenv::system line 28) had an error: NoMethodError: undefined method `loaded_recipe?' for #<Chef::RunContext:0x7f34cf773ed0> 
Chef never successfully completed! Any errors should be visible in the 
output above. Please fix your recipes so that they properly complete. 

をびびるました。 rbenvのバージョンを指定する必要があるかのように思われますが、信頼できるバージョンとはどこにありますか?

編集:また、jsonでユーザーの詳細を指定する必要があります。システムおよびユーザー(迷惑メール)レベルへのインストール以降です。シェフは、ぼかしボックスが提供するルビーを使用しています。ここにrbenv jsonのための私の更新されたルビーバージョンがどのように見えるのですか?

chef.json = { 
    'rbenv' => { 
    'user_installs' => [ 
     { 
     'user' => 'vagrant', 
     'rubies' => ['1.9.3-p327'], 
     'global' => '1.9.3-p327', 
     'gems' => { 
      '1.9.3-p327' => [ 
      { 'name' => 'bundler' }, 
      { 'name' => 'rake' } 
      ] 
     } 
     } 
    ] 
    }, 

答えて

7

これは、この本で使用している(珍しい)バージョン管理システムが原因であるようです。彼らのマスターブランチは安定していませんが、最新のタグ付きバージョンに戻ると、エラーは消えてしまいます。私は司書-シェフではなくBerkshelfを使用しますが、私はとにかく私の固定Berkshelfラインを含まなければならないので、構文はほとんど同じになります。

cookbook 'rbenv', git: 'git://github.com/fnichol/chef-rbenv.git', ref: "v0.7.2"

ref:が重要なビットです。これは私のためのエラーを修正しました!

+0

ありがとう!それはうまくいった。その本当に奇妙な、迷惑行為についてのすべてのブログとレールのセットアップenvはこれを言及しないでください。 – TheLegend

関連する問題