我正在使用Linode和Ubuntu 10.04以及Capistrano,Unicorn和& Nginx要部署。
如何使用此设置执行等效的heroku run rake db:reset
?是否像cap deploy:cold
一样简单来运行迁移?
我已经部署并希望删除所有数据库并重新运行所有迁移但不确定使用此设置运行哪些命令。
答案 0 :(得分:8)
我写了一个小文件,你可以复制以通过capistrano运行任意rake任务:http://jessewolgamott.com/blog/2012/09/10/the-one-where-you-run-rake-commands-with-capistrano/
设置完成后,您可以:
cap sake:invoke task="db:reset"
答案 1 :(得分:4)
对于没有实际删除数据库的Capistrano 3。使用bundle exec cap db:reset
namespace :db do
desc 'Resets DB without create/drop'
task :reset do
on primary :db do
within release_path do
with rails_env: fetch(:stage) do
execute :rake, 'db:schema:load'
execute :rake, 'db:seed'
end
end
end
end
end
答案 2 :(得分:3)
您可以将以下内容添加到deploy.rb文件
namespace :custom do
task :task do
run "cd #{current_path} && bundle exec rake db:reset RAILS_ENV=#{rails_env}"
end
end
然后运行cap custom:task
以清除数据库。
答案 3 :(得分:2)
如果您使用的是Capistrano 3,请考虑使用capistrano-rails-collection。
您还可以直接从存储库中的db.rake文件中复制代码。
或者,如果您想要一个完整的解决方案来在远程服务器上运行所有rake任务,请查看Cape gem。