我正在使用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