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