class Pipely::Bundler::Bundle
Provides access to a bundle’s list of gems
Constants
- SOURCE_TYPES
Attributes
spec_set[R]
Public Class Methods
build(vendor_dir, groups=[:default], definition=::Bundler.definition)
click to toggle source
# File lib/pipely/bundler/bundle.rb, line 15 def self.build(vendor_dir, groups=[:default], definition=::Bundler.definition) new( vendor_dir, definition.specs_for(groups), definition.instance_variable_get(:@locked_sources) ) end
new(vendor_dir, spec_set, locked_sources)
click to toggle source
# File lib/pipely/bundler/bundle.rb, line 25 def initialize(vendor_dir, spec_set, locked_sources) @spec_set = spec_set @locked_sources = locked_sources @vendor_dir = vendor_dir unless Dir.exists? @vendor_dir FileUtils.mkdir_p(@vendor_dir) end end
Public Instance Methods
gem_files(opts = {})
click to toggle source
# File lib/pipely/bundler/bundle.rb, line 35 def gem_files(opts = {}) gem_packager = opts[:gem_packager] || GemPackager.new(@vendor_dir) gems_to_exclude = opts[:gems_to_exclude] || [] gem_files = {} excluded_gems = lambda { |s| gems_to_exclude.include? s.name } merge_gem = lambda { |s| gem_files.merge!(gem_file(s, gem_packager)) } @spec_set.to_a.reject(&excluded_gems).each(&merge_gem) gem_files end
Private Instance Methods
gem_file(spec, gem_packager)
click to toggle source
# File lib/pipely/bundler/bundle.rb, line 51 def gem_file(spec, gem_packager) if source = locked_sources_by_name[spec.name] gem_packager.build_from_source(source.name, source.path) else gem_packager.package(spec) end end
locked_sources_by_name()
click to toggle source
# File lib/pipely/bundler/bundle.rb, line 59 def locked_sources_by_name return @locked_sources_by_name if @locked_sources_by_name @locked_sources_by_name = {} @locked_sources.each do |source| # Only include git or path sources. if SOURCE_TYPES.include?(source.class.name) @locked_sources_by_name[source.name] = source end end locked_sources_by_name end