Module: IronWorkerNG::Feature::Ruby::MergeGem::InstanceMethods
- Included in:
- Code::Ruby
- Defined in:
- lib/iron_worker_ng/feature/ruby/merge_gem.rb
Instance Attribute Summary collapse
-
#merge_gem_reqs ⇒ Object
readonly
Returns the value of attribute merge_gem_reqs.
Class Method Summary collapse
Instance Method Summary collapse
Instance Attribute Details
#merge_gem_reqs ⇒ Object (readonly)
Returns the value of attribute merge_gem_reqs.
53 54 55 |
# File 'lib/iron_worker_ng/feature/ruby/merge_gem.rb', line 53 def merge_gem_reqs @merge_gem_reqs end |
Class Method Details
.included(base) ⇒ Object
98 99 100 |
# File 'lib/iron_worker_ng/feature/ruby/merge_gem.rb', line 98 def self.included(base) IronWorkerNG::Code::Base.register_feature(:name => 'merge_gem', :for_klass => base, :args => 'NAME[,VERSION]') end |
Instance Method Details
#merge_gem(name, version = '>= 0') ⇒ Object Also known as: gem
55 56 57 58 59 60 |
# File 'lib/iron_worker_ng/feature/ruby/merge_gem.rb', line 55 def merge_gem(name, version = '>= 0') IronCore::Logger.info 'IronWorkerNG', "Adding ruby gem dependency with name='#{name}' and version='#{version}'" @merge_gem_reqs ||= [] @merge_gem_reqs << Bundler::Dependency.new(name, version.split(', ')) end |
#merge_gem_fixate ⇒ Object
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
# File 'lib/iron_worker_ng/feature/ruby/merge_gem.rb', line 64 def merge_gem_fixate IronCore::Logger.info 'IronWorkerNG', 'Fixating gems dependencies' @merge_gem_reqs ||= [] @features.reject! do |f| f.class == IronWorkerNG::Feature::Ruby::MergeGem::Feature end if @merge_gem_reqs.length > 0 reqs = @merge_gem_reqs.map { |req| Bundler::DepProxy.new(req, Gem::Platform::RUBY) } source = nil begin source = Bundler::Source::Rubygems.new rescue Bundler::GemfileNotFound ENV['BUNDLE_GEMFILE'] = 'Gemfile' source = Bundler::Source::Rubygems.new end index = Bundler::Index.build { |index| index.use source.specs } spec_set = Bundler::Resolver.resolve(reqs, index) spec_set.to_a.each do |spec| spec.__materialize__ IronCore::Logger.info 'IronWorkerNG', "Merging ruby gem with name='#{spec.name}' and version='#{spec.version}'" @features << IronWorkerNG::Feature::Ruby::MergeGem::Feature.new(self, spec) end end end |