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