class Pipely::Bundler::ProjectGem
Builds the project’s gem from gemspec and pulls in its dependencies via the gem’s bundle.
Attributes
project_spec[R]
Public Class Methods
load(vendor_dir)
click to toggle source
# File lib/pipely/bundler/project_gem.rb, line 12 def self.load(vendor_dir) if gem_spec = Dir.glob("*.gemspec").first # project gem spec new(Gem::Specification::load(gem_spec), vendor_dir) else raise "Failed to find gemspec" end end
new(project_spec, vendor_dir)
click to toggle source
# File lib/pipely/bundler/project_gem.rb, line 21 def initialize(project_spec, vendor_dir) @project_spec = project_spec @vendor_dir = vendor_dir unless Dir.exists? @vendor_dir FileUtils.mkdir_p(@vendor_dir) end end
Public Instance Methods
dependency_gem_files(bundle=Bundle.build(@vendor_dir))
click to toggle source
# File lib/pipely/bundler/project_gem.rb, line 34 def dependency_gem_files(bundle=Bundle.build(@vendor_dir)) # Always exclude bundler and the project gem gems_to_exclude = [ @project_spec.name, 'bundler' ] bundle.gem_files(gems_to_exclude: gems_to_exclude) end
gem_files()
click to toggle source
# File lib/pipely/bundler/project_gem.rb, line 29 def gem_files # Project gem should be at the bottom of the dep list @gem_files ||= dependency_gem_files.merge(project_gem_file) end
project_gem_file(gem_packager=GemPackager.new(@vendor_dir))
click to toggle source
# File lib/pipely/bundler/project_gem.rb, line 41 def project_gem_file(gem_packager=GemPackager.new(@vendor_dir)) gem_packager.build_from_source(@project_spec.name, Dir.pwd) end