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