Capistrano部署更改迁移目录
问题描述:
我有一个不在存储库根目录中的rails应用程序。部署后,其他一些静态文件将部署在父目录中。该结构是这样的:Capistrano部署更改迁移目录
root
-- otherstuff
-- railsapp
当我做帽部署一个部署:迁移时,Capistrano的命令得到执行这个样子的,这当然不起作用:
cd /u/apps/minicart/releases/20100717215044; rake RAILS_ENV=staging db:migrate
如何改变这种做法,这将是:
cd /u/apps/minicart/releases/20100717215044/railsapp; rake RAILS_ENV=staging db:migrate
我把它通过添加部署后执行此命令任务工作:finalize_update,但我宁愿使用内置我n方法,加上我的黑客版本在每次部署时执行。
任何意见,将不胜感激。
Tim
答
原来这很简单。
我将部署名称空间添加到了我的deploy.rb文件,然后重新定义了迁移方法。现在我的方法运行在cap deploy:migrations上。
namespace :deploy do
desc "Migrating the database"
task :migrate, :roles => :app do
run <<-CMD
cd #{release_path}/minicart; RAILS_ENV=#{stage} rake db:migrate
CMD
end
end
每个部署的静态文件是否相同? – Eimantas 2010-07-17 22:49:02
不,他们也改变了,虽然没有那么频繁。 – 2010-07-18 17:13:38