Я использую Chef для настройки узла под управлением Ubuntu 12.04. Я хотел использовать Ruby 1.9.3, в том числе для Chef, и использую этот пользовательский загрузчик файл, который я нашел для этого. (Ранее я пытался использовать RVM в сочетании с Chef и обнаружил, что это вызывает проблемы на каждом шагу — я надеялся, что это будет менее подвержено ошибкам.)
Когда я запускаю шеф-клиент на этом узле, он достигает точки попытки установить мое приложение Rails, пытается установить Bundler и терпит неудачу, таким образом:
Recipe: <Dynamically Defined Resource>
* gem_package[Bundler] action install
================================================================================
Error executing action `install` on resource 'gem_package[Bundler]'
================================================================================
NoMethodError
-------------
undefined method `full_name' for nil:NilClass
Resource Declaration:
---------------------
# In /var/chef/cache/cookbooks/application_ruby/providers/rails.rb
162: gem_package gem do
163: action :install
164: source src if src
165: version ver if ver && ver.length > 0
166: end
167: end
Compiled Resource:
------------------
# Declared in /var/chef/cache/cookbooks/application_ruby/providers/rails.rb:162:in `block in install_gems'
gem_package("Bundler") do
provider Chef::Provider::Package::Rubygems
action [:install]
retries 0
retry_delay 2
package_name "Bundler"
version ">1.3"
cookbook_name "tiptap_api"
end
Чтобы попытаться изолировать проблему, я поместил следующий вызов gem_package
в рецепт перед попыткой развертывания:
gem_package 'Bundler' do
version '>0'
action :install
end
Это тоже не удается, таким же образом.
Я обнаружил, что исполняемый файл gem
, установленный apt-get, на самом деле назывался gem1.9.1
. Я подумал, что это может быть проблемой, и переименовал его в gem
. Как только это было сделано, я мог запустить sudo gem install bundler
нормально и без каких-либо проблем, но шеф-клиент все еще выдает эту ошибку.
Что происходит, как это исправить и почему это сообщение об ошибке такое ужасное?
"bundler"
не то же самое, что"Bundler"
. Дело имеет значение! - person Holger Just   schedule 05.09.2013