Class: Chef::Cookbook::GemInstaller

Inherits:
Object
  • Object
show all
Defined in:
lib/chef/cookbook/gem_installer.rb

Defined Under Namespace

Classes: ChefBundlerUI

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(cookbook_collection, events) ⇒ GemInstaller



30
31
32
33
# File 'lib/chef/cookbook/gem_installer.rb', line 30

def initialize(cookbook_collection, events)
  @cookbook_collection = cookbook_collection
  @events = events
end

Instance Attribute Details

#cookbook_collectionChef::CookbookCollection



28
29
30
# File 'lib/chef/cookbook/gem_installer.rb', line 28

def cookbook_collection
  @cookbook_collection
end

#eventsChef::EventDispatch::Dispatcher



26
27
28
# File 'lib/chef/cookbook/gem_installer.rb', line 26

def events
  @events
end

Instance Method Details

#installObject

Installs the gems into the omnibus gemset.



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/chef/cookbook/gem_installer.rb', line 37

def install
  cookbook_gems = []

  cookbook_collection.each do |cookbook_name, cookbook_version|
    cookbook_gems += cookbook_version..gems
  end

  events.cookbook_gem_start(cookbook_gems)

  unless cookbook_gems.empty?
    begin
      inline_gemfile do
        source Chef::Config[:rubygems_url]
        cookbook_gems.each do |args|
          gem(*args)
        end
      end
    rescue Exception => e
      events.cookbook_gem_failed(e)
      raise
    end
  end

  events.cookbook_gem_finished
end