Я использую шеф-повар, чтобы настроить узел с Ubuntu 12.04. Я хотел использовать Ruby 1.9.3, в том числе для Chef, и я использую собственный загрузочный файл this, который я нашел для его выполнения. (Я ранее пытался использовать RVM совместно с шеф-поваром и обнаружил, что это вызывало проблемы на каждом шагу - я надеялся, что это будет менее подвержено ошибкам.)gem_package не работает в Ruby 1.9.3 - неопределенный метод 'full_name' для nil
Когда я запускаю шеф-клиент на этом узле, он достигает точка в попытке установить мое приложение 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
T его тоже не удается, таким же образом.
Я обнаружил, что исполняемый файл gem
, установленный apt-get, фактически был назван gem1.9.1
. Я думал, что это может быть проблемой, и переименовал ее в gem
. Как только это было сделано, я мог нормально запускать sudo gem install bundler
и без проблем, но шеф-клиент все еще производит эту ошибку.
Что происходит, как я могу это исправить, и почему это сообщение об ошибке так ужасно?
'' bundler "' не то же самое, что '' Bundler "'. Дело имеет значение! –
@HolgerJust С одной стороны, теперь я чувствую себя идиотом. С другой стороны, моя проблема решена, и если вы хотите ответить на этот вопрос, я с радостью соглашусь с ней. – MrTheWalrus
Не чувствуй себя так. Иногда все, что требуется, - это еще одна пара глаз, чтобы обнаружить очевидное :) –