我最近在我的开发Rails站点添加了第二个数据库,并进行了自定义rake任务,'SysConfig:db:migrate',如下所示:
namespace :SysConfig do
task :set_custom_db_config_paths do
ENV['SCHEMA'] = 'db_sysconfig/schema.rb'
Rails.application.config.paths['db'] = ['db_sysconfig']
Rails.application.config.paths['db/migrate'] = ['db_sysconfig/migrate']
Rails.application.config.paths['db/seeds'] = ['db_sysconfig/seeds.rb']
Rails.application.config.paths['config/database'] = ['config/database_sysconfig.yml']
end
namespace :db do
task :migrate => :set_custom_db_config_paths do
Rake::Task["db:migrate"].invoke
end
...
end
end
这将获取db_sysconfig / migrate文件夹中的所有迁移,并将它们部署到SysConfig数据库。但是,我正在努力研究如何在Capistrano的deploy.rb文件中设置此任务,因为我部署到登台/生产时。有谁知道如何在capistrano中设置应用程序配置路径?
Capistrano'2.15.4' Rails'4.0.2' Ruby'2.1.0'
答案 0 :(得分:0)
我在deploy.rb文件中的deploy命名空间中添加了一个新任务:
namespace :deploy do
...
task :SysConfig, roles: :app do
run "cd #{current_path}; RAILS_ENV=#{rails_env} rake SysConfig:db:migrate"
end
end
after "deploy:migrate", "deploy:SysConfig"
然后我将其设置为在运行deploy:migrate任务后运行,这导致它同时成功迁移到两个数据库。