class OfflineDeployer::GemsHandler

Attributes

app_root[R]
branch[R]
from_path[R]
from_tag[R]
to_tag[R]
zip_file_path[R]

Public Class Methods

new(from_tag, to_tag, app_root, zip_file_path, from_path = nil) click to toggle source
# File lib/offline_deployer/gems_handler.rb, line 3
def initialize(from_tag, to_tag, app_root, zip_file_path, from_path = nil)
  @zip_file_path = zip_file_path
  @from_tag = from_tag
  @to_tag = to_tag
  @app_root = app_root
  @from_path = from_path || default_from_path
  @branch = current_branch
end

Public Instance Methods

call() click to toggle source
# File lib/offline_deployer/gems_handler.rb, line 14
def call
  prepare_tmp_folder
  copy_gems_to_tmp_folder
  add_gems_to_zip
  destroy_tmp_folder
  checkout_branch
end

Private Instance Methods

add_gems_to_zip() click to toggle source
# File lib/offline_deployer/gems_handler.rb, line 75
def add_gems_to_zip
  `cd #{tmp_release_folder} && zip -r #{zip_file_path} vendor/*`
end
checkout_branch() click to toggle source
# File lib/offline_deployer/gems_handler.rb, line 83
def checkout_branch
  `cd #{app_root} && git checkout #{branch}`
end
copy_gem(gem_version) click to toggle source
# File lib/offline_deployer/gems_handler.rb, line 68
def copy_gem(gem_version)
  `rsync --progress #{from_path}/build_info/#{gem_version}.info #{to_path}/build_info/`
  `rsync --progress #{from_path}/cache/#{gem_version}.gem #{to_path}/cache/`
  `rsync --progress -r #{from_path}/gems/#{gem_version} #{to_path}/gems/`
  `rsync --progress #{from_path}/specifications/#{gem_version}.gemspec #{to_path}/specifications/`
end
copy_gems_to_tmp_folder() click to toggle source
# File lib/offline_deployer/gems_handler.rb, line 60
def copy_gems_to_tmp_folder
  gems.each do |gem_spec|
    name, version = gem_spec.split(' ')
    version = version[1...-1]
    copy_gem("#{name}-#{version}")
  end
end
current_branch() click to toggle source
# File lib/offline_deployer/gems_handler.rb, line 32
def current_branch
  `cd #{app_root} && git rev-parse --abbrev-ref HEAD`
end
default_from_path() click to toggle source
# File lib/offline_deployer/gems_handler.rb, line 24
def default_from_path
  OfflineDeployer.settings.gems_source_path
end
destroy_tmp_folder() click to toggle source
# File lib/offline_deployer/gems_handler.rb, line 79
def destroy_tmp_folder
  FileUtils.remove_dir(tmp_release_folder)
end
gem_list(tag) click to toggle source
# File lib/offline_deployer/gems_handler.rb, line 47
def gem_list(tag)
  Dir.chdir(app_root) do
    `git checkout #{tag}`
    Bundler.with_clean_env do
      `bundle list`.gsub('  * ', '')
    end
  end
end
gems() click to toggle source
# File lib/offline_deployer/gems_handler.rb, line 56
def gems
  gem_list(to_tag).split("\n") - gem_list(from_tag).split("\n")
end
prepare_tmp_folder() click to toggle source
# File lib/offline_deployer/gems_handler.rb, line 36
def prepare_tmp_folder
  FileUtils.mkdir_p "#{to_path}/build_info"
  FileUtils.mkdir_p "#{to_path}/cache"
  FileUtils.mkdir_p "#{to_path}/gems"
  FileUtils.mkdir_p "#{to_path}/specifications"
end
tmp_release_folder() click to toggle source
# File lib/offline_deployer/gems_handler.rb, line 28
def tmp_release_folder
  "#{app_root}/tmp/releases/gems_handler"
end
to_path() click to toggle source
# File lib/offline_deployer/gems_handler.rb, line 43
def to_path
  "#{tmp_release_folder}/#{OfflineDeployer.settings.gems_vendor_path}"
end