Module: IronWorkerNG::Feature::Ruby::MergeGemfile::InstanceMethods

Included in:
Code::Runtime::Ruby
Defined in:
lib/iron_worker_ng/feature/ruby/merge_gemfile.rb

Instance Method Summary collapse

Instance Method Details

#merge_gemfile(path, *groups) ⇒ Object Also known as: gemfile



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/iron_worker_ng/feature/ruby/merge_gemfile.rb', line 20

def merge_gemfile(path, *groups)
  groups = groups.map { |g| g.to_sym }
  groups << :default if groups.length == 0

  IronCore::Logger.info 'IronWorkerNG', "Adding ruby gems dependencies from #{groups.join(', ')} group#{groups.length > 1 ? 's' : ''} of #{path}"

  feature = IronWorkerNG::Feature::Ruby::MergeGemfile::Feature.new(self, path, groups)

  IronWorkerNG::Fetcher.fetch_to_file(feature.rebase(path)) do |gemfile|
    specs = Bundler::Definition.build(gemfile, path + '.lock', nil).specs_for(groups)

    specs.each do |spec|
      merge_gem(spec.name, spec.version.to_s)
    end
  end

  @features << feature
end