我正在使用 Linode 和 Ubuntu 10.04 和 Capistrano、Unicorn 和 Nginx 进行部署。
我如何heroku run rake db:reset
使用此设置进行等效操作?是否像cap deploy:cold
再次运行迁移一样简单?
我已经部署并希望删除所有数据库并重新运行所有迁移,但不确定使用此设置运行哪些命令来执行此操作。
我正在使用 Linode 和 Ubuntu 10.04 和 Capistrano、Unicorn 和 Nginx 进行部署。
我如何heroku run rake db:reset
使用此设置进行等效操作?是否像cap deploy:cold
再次运行迁移一样简单?
我已经部署并希望删除所有数据库并重新运行所有迁移,但不确定使用此设置运行哪些命令来执行此操作。
我写了一个小文件,你可以复制它来通过 capistrano 运行任意 rake 任务:http: //jessewolgamott.com/blog/2012/09/10/the-one-where-you-run-rake-commands-with-capistrano /
设置后,您可以:
cap sake:invoke task="db:reset"
对于 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
您可以将以下内容添加到您的 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
清除数据库。
如果您使用的是 Capistrano 3,请考虑使用capistrano-rails-collection。
您还可以使用直接从存储库中的db.rake文件复制代码。
或者,如果您想要一个完整的解决方案来在远程服务器上运行所有 rake 任务,请查看Cape gem。