Reputation: 18280
Using Chef 10.24.0, when including the database
cookbook,
include_recipe "mysql::server"
include_recipe "database::mysql"
the mysql
gem fails to install, with the following output:
[2013-03-10T19:54:29+00:00] INFO: Processing chef_gem[mysql] action install (mysql::ruby line 36)
================================================================================
Error executing action `install` on resource 'chef_gem[mysql]'
================================================================================
NoMethodError
-------------
undefined method `last' for #<Gem::AvailableSet:0x00000002b25be0>
Cookbook Trace:
---------------
/tmp/vagrant-chef-1/chef-solo-1/cookbooks/mysql/recipes/ruby.rb:36:in `from_file'
/tmp/vagrant-chef-1/chef-solo-1/cookbooks/database/recipes/mysql.rb:20:in `from_file'
/tmp/vagrant-chef-1/chef-solo-1/cookbooks/scafandru/recipes/database.rb:11:in `from_file'
Resource Declaration:
---------------------
# In /tmp/vagrant-chef-1/chef-solo-1/cookbooks/mysql/recipes/ruby.rb
36: chef_gem "mysql"
Compiled Resource:
------------------
# Declared in /tmp/vagrant-chef-1/chef-solo-1/cookbooks/mysql/recipes/ruby.rb:36:in `from_file'
chef_gem("mysql") do
provider Chef::Provider::Package::Rubygems
action :install
retries 0
retry_delay 2
package_name "mysql"
cookbook_name :mysql
recipe_name "ruby"
end
================================================================================
Recipe Compile Error in /tmp/vagrant-chef-1/chef-solo-1/cookbooks/scafandru/recipes/database.rb
================================================================================
NoMethodError
-------------
chef_gem[mysql] (mysql::ruby line 36) had an error: NoMethodError: undefined method `last' for #<Gem::AvailableSet:0x00000002b25be0>
Cookbook Trace:
---------------
/tmp/vagrant-chef-1/chef-solo-1/cookbooks/mysql/recipes/ruby.rb:36:in `from_file'
/tmp/vagrant-chef-1/chef-solo-1/cookbooks/database/recipes/mysql.rb:20:in `from_file'
/tmp/vagrant-chef-1/chef-solo-1/cookbooks/scafandru/recipes/database.rb:11:in `from_file'
Relevant File Content:
----------------------
/tmp/vagrant-chef-1/chef-solo-1/cookbooks/mysql/recipes/ruby.rb:
29: include_recipe "build-essential"
30: include_recipe "mysql::client"
31:
32: node['mysql']['client']['packages'].each do |mysql_pack|
33: resources("package[#{mysql_pack}]").run_action(:install)
34: end
35:
36>> chef_gem "mysql"
37:
[2013-03-10T19:54:31+00:00] ERROR: Running exception handlers
[2013-03-10T19:54:31+00:00] ERROR: Exception handlers complete
[2013-03-10T19:54:31+00:00] FATAL: Stacktrace dumped to /tmp/vagrant-chef-1/chef-stacktrace.out
[2013-03-10T19:54:31+00:00] FATAL: NoMethodError: chef_gem[mysql] (mysql::ruby line 36) had an error: NoMethodError: undefined method `last' for #<Gem::AvailableSet:0x00000002b25be0>
Chef never successfully completed! Any errors should be visible in the
output above. Please fix your recipes so that they properly complete.
Attempting to reduce the all variables that could cause the installation to fail, I discarded the database
cookbook, and constrained to the RubyGem installation in the mysql::ruby
recipe
include_recipe "mysql::server"
include_recipe "mysql::ruby"
but the error was equivalent.
Same applies for the simplest gem_package
install:
gem_package 'mysql' do
options "--no-ri --no-rdoc"
end
I'm out of ideas, can anyone please shed some light into this?
Upvotes: 3
Views: 4176
Reputation: 18280
After downgrading to the latest pre-2.0 version (1.8.5) of RubyGems, everything works fine.
This issue will most likely be addressed in RubyGems 2.0.3.
Upvotes: 3