class Guard::Migrate

Attributes

rails_env[R]
seed[R]

Public Class Methods

new(options = {}) click to toggle source
Calls superclass method
# File lib/guard/migrate.rb, line 9
def initialize(options = {})
  super

  @bundler = true unless options[:bundler] == false
  @cmd = options[:cmd].to_s unless options[:cmd].to_s.empty?
  @reset = true if options[:reset] == true
  @test_prepare = options[:test_prepare]
  @run_on_start = true if options[:run_on_start] == true
  @rails_env = options[:rails_env]
  @seed = options[:seed]
end

Public Instance Methods

bundler?() click to toggle source
# File lib/guard/migrate.rb, line 21
def bundler?
  !!@bundler && File.exist?("#{Dir.pwd}/Gemfile")
end
cmd?() click to toggle source
# File lib/guard/migrate.rb, line 29
def cmd?
  !!@cmd
end
migrate(migrations = []) click to toggle source
# File lib/guard/migrate.rb, line 81
def migrate(migrations = [])
  return if !reset? && migrations.empty?
  if reset?
    Compat::UI.info "Running #{rake_string}"
    result = system(rake_string)
    result &&= 'reset'
  else
    result = run_all_migrations(migrations)
  end

  Notify.new(result).notify
end
rake_string(version = nil) click to toggle source
# File lib/guard/migrate.rb, line 105
def rake_string(version = nil)
  [
    bundler_command,
    custom_command,
    rake_command,
    migrate_string(version),
    seed_string,
    prepare_string,
    rails_env_string
  ].compact.join(' ')
end
reload() click to toggle source

Called on Ctrl-Z signal This method should be mainly used for “reload” (really!) actions like reloading passenger/spork/bundler/…

# File lib/guard/migrate.rb, line 61
def reload
  migrate if run_on_start?
end
reset?() click to toggle source
# File lib/guard/migrate.rb, line 37
def reset?
  !!@reset
end
run_all() click to toggle source

Called on Ctrl-/ signal This method should be principally used for long action like running all specs/tests/…

# File lib/guard/migrate.rb, line 67
def run_all
  migrate if run_on_start?
end
run_on_changes(paths) click to toggle source

Called on file(s) modifications

# File lib/guard/migrate.rb, line 72
def run_on_changes(paths)
  if paths.any? { |path| path.match(%r{^db/migrate/(\d+).+\.rb}) } || reset?
    migrations = paths.map { |path| Migration.new(path) }
    migrate(migrations)
  elsif paths.any? { |path| path.match(%r{^db/seeds\.rb$}) }
    seed_only
  end
end
run_on_start?() click to toggle source
# File lib/guard/migrate.rb, line 25
def run_on_start?
  !!@run_on_start
end
run_redo?(version) click to toggle source
# File lib/guard/migrate.rb, line 101
def run_redo?(version)
  !reset? && version && !version.empty?
end
seed_only() click to toggle source
# File lib/guard/migrate.rb, line 94
def seed_only
  Compat::UI.info "Running #{seed_only_string}"
  result = system(seed_only_string)
  result &&= 'seed'
  Notify.new(result).notify
end
seed_only_string() click to toggle source
# File lib/guard/migrate.rb, line 117
def seed_only_string
  [
    bundler_command,
    custom_command,
    rake_command,
    seed_string,
    prepare_string,
    rails_env_string
  ].compact.join(' ')
end
start() click to toggle source

Called once when Guard starts Please override initialize method to init stuff

# File lib/guard/migrate.rb, line 50
def start
  migrate if run_on_start?
end
stop() click to toggle source

Called on Ctrl-C signal (when Guard quits)

# File lib/guard/migrate.rb, line 55
def stop
  true
end
test_prepare?() click to toggle source
# File lib/guard/migrate.rb, line 33
def test_prepare?
  !!@test_prepare
end

Private Instance Methods

bundler_command() click to toggle source
# File lib/guard/migrate.rb, line 149
def bundler_command
  'bundle exec' if bundler?
end
custom_command() click to toggle source
# File lib/guard/migrate.rb, line 153
def custom_command
  "#{@cmd.strip}" if cmd?
end
migrate_string(version) click to toggle source
# File lib/guard/migrate.rb, line 170
def migrate_string(version)
  return if custom_command.to_s.match(/db:migrate/)

  string = 'db:migrate'
  string += ':reset' if reset?
  string += ":redo VERSION=#{version}" if run_redo?(version)
  string
end
prepare_string() click to toggle source
# File lib/guard/migrate.rb, line 161
def prepare_string
  return if !test_prepare? || custom_command.to_s.match(/db:test:prepare/)
  'db:test:prepare'
end
rails_env_string() click to toggle source
# File lib/guard/migrate.rb, line 157
def rails_env_string
  "RAILS_ENV=#{rails_env}" if rails_env
end
rake_command() click to toggle source
# File lib/guard/migrate.rb, line 145
def rake_command
  'rake' unless custom_command.to_s.match(/rake/)
end
run_all_migrations(migrations) click to toggle source
# File lib/guard/migrate.rb, line 130
def run_all_migrations(migrations)
  result = nil
  migrations.each do |migration|
    if migration.valid?
      Compat::UI.info "Running #{rake_string(migration.version)}"
      result = system rake_string(migration.version)
      break unless result
    else
      Compat::UI.info "Skip empty migration - #{migration.version}"
    end
  end

  result
end
seed_string() click to toggle source
# File lib/guard/migrate.rb, line 166
def seed_string
  'db:seed' if @seed
end