Ruby on rails capistrano 3`rake db:migrate`仍在运行

Ruby on rails capistrano 3`rake db:migrate`仍在运行,ruby-on-rails,capistrano3,Ruby On Rails,Capistrano3,我的rails应用程序使用Capistrano3.4.0执行部署任务。 在我的Capfile中,我有一行require'capistrano/rails/migrations',以便配置可以运行DB迁移的任务。 当我cap production deploy时,我总能看到以下输出: INFO [deploy:migrate] Run `rake db:migrate` DEBUG [6214167f] Running /usr/bin/env if test ! -d XXXX/releases

我的rails应用程序使用Capistrano3.4.0执行部署任务。 在我的Capfile中,我有一行
require'capistrano/rails/migrations'
,以便配置可以运行DB迁移的任务。 当我
cap production deploy
时,我总能看到以下输出:

INFO [deploy:migrate] Run `rake db:migrate`
DEBUG [6214167f] Running /usr/bin/env if test ! -d XXXX/releases/20160117093811; then echo "Directory does not exist 'XXXX/releases/20160117093811'" 1>&2; false; fi as deploy@candiru-web
DEBUG [6214167f] Command: if test ! -d XXXX/releases/20160117093811; then echo "Directory does not exist 'XXXX/releases/20160117093811'" 1>&2; false; fi
DEBUG [6214167f] Finished in 0.005 seconds with exit status 0 (successful).
INFO [1ebeb8c8] Running ~/.rvm/bin/rvm default do bundle exec rake db:migrate as deploy@candiru-web
DEBUG [1ebeb8c8] Command: cd XXXX/releases/20160117093811 && ( RAILS_ENV=production ~/.rvm/bin/rvm default do bundle exec rake db:migrate )
即使我没有在:deploy之后添加类似于
的内容,“deploy:migrate”

如果我注释掉行
require'capistrano/rails/migrations'
,迁移将不会执行


为什么??只有在我将任务添加到
config/deploy.rb
中的部署脚本时,它才应该运行吗?

根据gem的文档,您必须设置
:conditionally\u migrate
选项,以检查是否需要运行迁移

我想这是您需要的选项,您应该将其添加到
deploy.rb
,方法如下:

set :conditionally_migrate, true

为了回答您的问题,文件中的任务
deploy:migrate
已设置为在
deploy:updated
之后运行

另外,如果您希望从部署过程中完全删除此任务,并始终通过调用
deploy:migrate
手动运行迁移,则可以执行以下操作:

Rake::Task["deploy:migrate"].clear_actions