我正在使用Linode与Ubuntu 10.04和Capistrano,Unicorn,& Nginx进行部署。Rails部署 - 你怎么做rake db:用capistrano重置?
如何使用此设置完成等效heroku run rake db:reset
?是否像cap deploy:cold
一样简单地运行迁移?
我已经部署并希望删除所有数据库并重新运行所有迁移,但不确定要使用此设置运行哪些命令来执行此操作。
我正在使用Linode与Ubuntu 10.04和Capistrano,Unicorn,& Nginx进行部署。Rails部署 - 你怎么做rake db:用capistrano重置?
如何使用此设置完成等效heroku run rake db:reset
?是否像cap deploy:cold
一样简单地运行迁移?
我已经部署并希望删除所有数据库并重新运行所有迁移,但不确定要使用此设置运行哪些命令来执行此操作。
我写了一个小小的文件,您可以通过复制Capistrano的运行任意耙任务:http://jessewolgamott.com/blog/2012/09/10/the-one-where-you-run-rake-commands-with-capistrano/
一旦设置,您可以:
cap sake:invoke task="db:reset"
您可以添加以下到您的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的三无实际删除数据库。如果您正在使用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
,可以考虑使用capistrano-rails-collection。
您也可以直接从存储库中的db.rake文件复制代码。或者,如果您想要一个完整的解决方案来运行远程服务器上的所有rake任务,请查看Cape gem。
当我尝试运行这个时,我得到:PGError:错误:权限被拒绝创建数据库 – Zephyr4434
您可能还需要monkey-patch db:reset任务,请参阅:http://stackoverflow.com/a/21047289/869616 – Darme