Module: Executive::Development

Defined in:
lib/executive.rb

Class Method Summary collapse

Class Method Details

.deployObject



59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
# File 'lib/executive.rb', line 59

def self.deploy
  if File.exists?(".deployed_revision")
    deployed_revision   = File.read(".deployed_revision").chomp
    migrations_present  = (`git log #{deployed_revision}..HEAD -- db/migrate/` != "")
    seeds_changed       = (`git log #{deployed_revision}..HEAD -- db/fixtures/` != "")
    env_changed         = (`git log #{deployed_revision}..HEAD -- .env` != "")
  else
    migrations_present  = true
    seeds_changed       = true
    env_changed         = true
  end

  puts ">> Deploying Development".green
  if migrations_present
    puts ">> Running Migrations".green
    ensure_system_call("foreman run rake db:migrate")
  else
    puts ">> Skipping Migrations".yellow
  end

  if seeds_changed
    puts ">> Updating DB Seeds".green
    ensure_system_call("foreman run rake db:seed_fu")
  else
    puts ">> Skipping DB Seeding".yellow
  end

  if env_changed
    puts ">> Restarting Foreman".green

    begin
      foreman_pid = `ps aux | grep 'executive'`.split("\n").first.split(" ")[1]
      Process.kill "HUP", foreman_pid.to_i
    rescue NoMethodError => e
      puts "Foreman isn't running. Run script/start.".red
    end
  else
    puts ">> Skipping Foreman Restart".yellow
  end

  File.open(".deployed_revision", "w+") { |f| f << `git rev-parse HEAD` }
  puts ">> Recorded Deployed Revision".green
end

.ensure_system_call(command) ⇒ Object



52
53
54
55
56
57
# File 'lib/executive.rb', line 52

def self.ensure_system_call(command)
  unless system(command)
    puts %Q(>> Error Running: "#{command}").red
    exit
  end
end