2013-02-26 82 views
0

我正嘗試爲廚師獨奏設置RVM烹飪書。如何與乘客一起使用RVM食譜?

我run_list樣子:

 
    "run_list": [ 
    "recipe[apt]", 
    "recipe[build-essential]", 
    "recipe[curl]", 
    "recipe[users]", 
    "recipe[rvm::vagrant]", 
    "recipe[rvm::system]", 
    "recipe[nginx::passenger]", 
    "recipe[nginx::source]", 
    "recipe[postgresql::server]", 
    "recipe[postgresql::client]" 
    ] 

我對RVM和Nginx的屬性:

 
    "rvm": { 
    "rubies": ["1.9.3-p0"], 
    "global": ["1.9.3-p0"], 
    "vagrant": { "system_chef_solo" : "/opt/ruby/bin/chef-solo" }, 
    "gems": { 
     "1.9.3-p0": [ 
     {"name": "bundler"}, 
     {"name": "passenger"}, 
     {"name": "rake"} 
     ] 
    } 
    }, 

    "nginx": { 
    "version": "1.2.5", 
    "user": "deploy", 
    "init_style": "init", 
    "modules": [ 
     "http_stub_status_module", 
     "http_ssl_module", 
     "http_gzip_static_module" 
    ], 
    "passenger": { 
     "version": "3.0.18" 
    }, 
    "configure_flags": [ 
     "--add-module=/var/lib/gems/1.9.1/gems/passenger-3.0.18/ext/nginx" 
    ], 
    "gzip_types": [ 
     "text/plain", 
     "text/html", 
     "text/css", 
     "text/xml", 
     "text/javascript", 
     "application/json", 
     "application/x-javascript", 
     "application/xml", 
     "application/xml+rss" 
    ] 
    }, 

然而,隨着轉換符:

 

================================================================================ 

Error executing action `install` on resource 'gem_package[passenger]' 

================================================================================ 


Gem::InstallError 

----------------- 

passenger requires rake (>= 0.8.1) 


Resource Declaration: 

--------------------- 

# In /tmp/vagrant-chef-1/chef-solo-1/cookbooks/nginx/recipes/passenger.rb 

53: gem_package 'passenger' do 
54: action :install 
55: version node["nginx"]["passenger"]["version"] 
56: gem_binary node["nginx"]["passenger"]["gem_binary"] if node["nginx"]["passenger"]["gem_binary"] 
57: end 
58: 

Compiled Resource: 

------------------ 

# Declared in /tmp/vagrant-chef-1/chef-solo-1/cookbooks/nginx/recipes/passenger.rb:53:in `from_file' 

gem_package("passenger") do 
    version "3.0.18" 
    package_name "passenger" 
    provider Chef::Provider::Package::Rubygems 
    retry_delay 2 
    action [:install] 
    retries 0 
    recipe_name "passenger" 
    cookbook_name :nginx 
end 

.... 

/opt/ruby/lib/ruby/gems/1.8/gems/chef-10.18.2/bin/../lib/chef/application/solo.rb:216:in `run_application' 
/opt/ruby/lib/ruby/gems/1.8/gems/chef-10.18.2/bin/../lib/chef/application.rb:72:in `run' 
/opt/ruby/lib/ruby/gems/1.8/gems/chef-10.18.2/bin/chef-solo:25 
/opt/ruby/bin/chef-solo:19:in `load' 
/opt/ruby/bin/chef-solo:19 
[2013-02-26T14:22:18+00:00] FATAL: Gem::InstallError: gem_package[passenger] (nginx::passenger line 53) had an error: Gem::InstallError: passenger requires rake (>= 0.8.1) 
Chef never successfully completed! Any errors should be visible in the 
output above. Please fix your recipes so that they properly complete. 

可以做些什麼?

回答

1

Nginx需要從源代碼編譯,而Apache可以使用Passenger模塊。這意味着,Nginx需要知道RVM寶石內的Passenger擴展的來源。

覆蓋:gem_binary

 
"passenger": { 
     "version": "3.0.18", 
     "gem_binary": "/usr/local/rvm/wrappers/ruby-1.9.3-p0/gem" 
    }, 

應該做的伎倆。

+0

如果我使用Ruby 2.0,乘客安裝出現錯誤: '/usr/lib/ruby/1.9.1/rubygems/dependency .rb:247:in to_specs':在/usr/lib/ruby/1.9.1/rubygems/dependency.rb:256:into_spec'的[](Gem :: LoadError)中找不到rake(> = 0) /usr/lib/ruby/1.9.1/rubygems.rb:1231:in gem'from' 這是因爲廚師安裝了自己的ruby 1.9,而安裝時乘客不使用默認的rvm ruby​​(2.0)。我重寫這個乘客屬性,但它沒有幫助: '「乘客」:{「gem_binary」:「/usr/local/rvm/wrappers/ruby-2.0.0-p353/gem」}' Can你幫我? – 2014-04-30 09:28:32