module Clemency

Constants

VERSION

Public Class Methods

config() click to toggle source
# File lib/clemency.rb, line 15
def self.config
  @config
end
configure(&blk) click to toggle source
# File lib/clemency.rb, line 44
def self.configure(&blk)
  @config.instance_eval(&blk)
end
define_release(&blk) click to toggle source
# File lib/clemency.rb, line 23
def self.define_release(&blk)
    release = Release.new
    release.instance_eval(&blk)
    Clemency.releases[release.get(:version)] = release
    release
end
latest_release() click to toggle source
# File lib/clemency.rb, line 34
def self.latest_release
  latest_verion = @releases.keys.sort{|a, b| Gem::Version.new(a) <=>  Gem::Version.new(b) }.last
  puts latest_verion
  @releases.fetch(latest_verion, nil)
end
load_config() click to toggle source
# File lib/clemency.rb, line 30
def self.load_config
  load "#{Rails.root}/config/clemency.rb"
end
load_release_files() click to toggle source
# File lib/clemency.rb, line 40
def self.load_release_files
  Dir.glob("#{Rails.root}/releases/*.rb").each { |f| load f }
end
migrate!(version) click to toggle source
# File lib/clemency.rb, line 48
def self.migrate!(version)
  puts "Clemency is migrating release #{version}"
  release = @releases.fetch(version, nil)
  if release.nil?
    puts "We could not find release #{version}"
    return
  end
  @config.call!(:before_up, release)
  release.call!(:up, release)
  @config.call!(:after_up, release)
end
releases() click to toggle source
# File lib/clemency.rb, line 19
def self.releases
  @releases
end
rollback!(version) click to toggle source
# File lib/clemency.rb, line 60
def self.rollback!(version)
  puts "Clemency is migrating release #{version}"
  release = @releases.fetch(version, nil)
  if release.nil?
    puts "We could not find release #{version}"
    return
  end
  @config.call!(:before_down, release)
  release.call!(:down, release)
  @config.call!(:after_down, release)
end
to_markdown() click to toggle source
# File lib/clemency.rb, line 72
def self.to_markdown
    @releases.map { |release| release.to_markdown }.join("\n\n")
end