Class: RailsMigrateAction

Inherits:
BuildAction show all
Defined in:
lib/kwala/actions/rails_migrate.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from BuildAction

command_line_action_name, command_line_action_names, create_action_from_command_line_name

Methods included from InheritanceTracker

#get_implementors

Class Method Details

.detailed_template_fileObject



58
59
60
# File 'lib/kwala/actions/rails_migrate.rb', line 58

def self.detailed_template_file
  nil
end

.summary_template_fileObject



54
55
56
# File 'lib/kwala/actions/rails_migrate.rb', line 54

def self.summary_template_file
  nil
end

Instance Method Details

#build_action(context) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/kwala/actions/rails_migrate.rb', line 3

def build_action(context)
  @res = `RAILS_ENV=test rake cerego:db:remigrate 2>&1`
  @success = $?.exitstatus == 0
  nres = ''
  if !@success
    # QUICK HACK as remigrate blows up on a timeout lock..
    nres = `RAILS_ENV=test rake db:migrate 2>&1`
    @success = $?.exitstatus == 0
    @res = @res + "\n ------ MIGRATE RERUN -----\n\n\n" + nres
  end

  if !@success
    raise KwalaAbortBuildException.new 
  end

  return @success
#   return unless @success
#   @res = @res +  "\n ----- MIGRATE REVERSE ----\n\n\n" + nres
#   reverse = `RAILS_ENV=test rake db:migrate VERSION=0 2>&1; echo $?`
#   unless $?.exitstatus == 0
#     # Reverse migration failed
#     @success = (reverse.index('ActiveRecord::IrreversibleMigration') != nil)
#     # Success here if and only if Migration is irreversible
#   end
#   @res = @res + reverse
#   return unless @success
#   @res = @res +  "\n ----- MIGRATE FORWARD ----\n\n\n" + nres
#   @res = `RAILS_ENV=test rake db:migrate 2>&1; echo $?`
#   @success = $?.exitstatus == 0
end

#detailed_display(context) ⇒ Object



48
49
50
51
52
# File 'lib/kwala/actions/rails_migrate.rb', line 48

def detailed_display(context)
  det_file = "#{context.output_directory}/#{context.project_name}_rails_migrate.html"
  res = "<html><body><h1>Migration Details</h1><pre><code>#{@res}</code></pre></body></html>"
  [det_file, res]
end

#scoreObject



34
35
36
37
# File 'lib/kwala/actions/rails_migrate.rb', line 34

def score
  # success is great else fail!
  @success ? 10 : -1000
end

#summary_display(context) ⇒ Object



39
40
41
42
43
44
45
46
# File 'lib/kwala/actions/rails_migrate.rb', line 39

def summary_display(context)
  details_link = "<a href=\"#{context.project_name}_rails_migrate.html\">Details</a>"
  if @success
    Amrita::SanitizedString.new("<h2>MIGRATION Succeeded.</h2>#{details_link}")
  else
    Amrita::SanitizedString.new("<h2>MIGRATION FAILED !:</h2>#{details_link}")
  end
end