【发布时间】:2013-10-16 13:10:57
【问题描述】:
我们的 rails 应用程序 (3.2.12) 有两个数据库,一个内容数据库和一个用户数据库。如何覆盖 deploy:migrate (rakefile here) 以便在“cap production deploy:cold”迁移过程中相应地为它们的两个目标数据库运行。
基本上它应该在部署期间执行此操作
** transaction: commit
* 2013-10-16 02:26:15 executing `deploy:migrate'
* executing "cd /home/deployer/apps/project/releases/20131015152439 && bundle exec rake RAILS_ENV=production db:migrate"
* executing "cd /home/deployer/apps/project/releases/20131015152439 && bundle exec rake RAILS_ENV=production user:db:migrate"
任何帮助将不胜感激。
编辑:我确实在部署命名空间中用我自己的任务替换了该任务
namespace :deploy do
set :migration_role, fetch(:migration_role, :db)
task :migrate do
on primary fetch(:migration_role) do
within release_path do
with rails_env: fetch(:rails_env) do
execute :rake, "db:migrate"
execute :rake, "user:db:migrate"
end
end
end
end
after 'deploy:updated', 'deploy:migrate'
end
这会引发错误“未定义的方法 `primary'”。
【问题讨论】:
-
您可以 a) 用您自己的任务替换该任务 b) 在该任务之前或之后添加另一个任务
标签: ruby-on-rails deployment capistrano multiple-databases