Module: Clemency

Defined in:
lib/clemency.rb,
lib/clemency/railtie.rb,
lib/clemency/release.rb,
lib/clemency/version.rb,
lib/clemency/callbacks.rb,
lib/clemency/configuration.rb,
lib/generators/clemency/install_generator.rb,
lib/generators/clemency/release_generator.rb

Defined Under Namespace

Modules: Generators Classes: Callbacks, Configuration, Error, Railtie, Release

Constant Summary collapse

VERSION =
"0.2.0"

Class Method Summary collapse

Class Method Details

.configObject



15
16
17
# File 'lib/clemency.rb', line 15

def self.config
  @config
end

.configure(&blk) ⇒ Object



44
45
46
# File 'lib/clemency.rb', line 44

def self.configure(&blk)
  @config.instance_eval(&blk)
end

.define_release(&blk) ⇒ Object



23
24
25
26
27
28
# 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_releaseObject



34
35
36
37
38
# 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_configObject



30
31
32
# File 'lib/clemency.rb', line 30

def self.load_config
  load "#{Rails.root}/config/clemency.rb"
end

.load_release_filesObject



40
41
42
# File 'lib/clemency.rb', line 40

def self.load_release_files
  Dir.glob("#{Rails.root}/releases/*.rb").each { |f| load f }
end

.migrate!(version) ⇒ Object



48
49
50
51
52
53
54
55
56
57
58
# 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

.releasesObject



19
20
21
# File 'lib/clemency.rb', line 19

def self.releases
  @releases
end

.rollback!(version) ⇒ Object



60
61
62
63
64
65
66
67
68
69
70
# 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_markdownObject



72
73
74
# File 'lib/clemency.rb', line 72

def self.to_markdown
    @releases.map { |release| release.to_markdown }.join("\n\n")
end