lib/capistrano/tasks/migrations.rake in capistrano-rails-1.1.1 vs lib/capistrano/tasks/migrations.rake in capistrano-rails-1.1.2

- old
+ new

@@ -3,21 +3,29 @@ namespace :deploy do desc 'Runs rake db:migrate if migrations are set' task :migrate => [:set_rails_env] do on primary fetch(:migration_role) do - within release_path do - with rails_env: fetch(:rails_env) do - execute :rake, "db:migrate" + conditionally_migrate = fetch(:conditionally_migrate) + info '[deploy:migrate] Checking changes in /db/migrate' if conditionally_migrate + if conditionally_migrate && test("diff -q #{release_path}/db/migrate #{current_path}/db/migrate") + info '[deploy:migrate] Skip `deploy:migrate` (nothing changed in db/migrate)' + else + info '[deploy:migrate] Run `rake db:migrate`' if conditionally_migrate + within release_path do + with rails_env: fetch(:rails_env) do + execute :rake, "db:migrate" + end end end end end after 'deploy:updated', 'deploy:migrate' end namespace :load do task :defaults do + set :conditionally_migrate, fetch(:conditionally_migrate, false) set :migration_role, fetch(:migration_role, :db) end end