2013-06-04 23 views
1

我正在使用Linode與Ubuntu 10.04和Capistrano,Unicorn,& Nginx進行部署。Rails部署 - 你怎麼做rake db:用capistrano重置?

如何使用此設置完成等效heroku run rake db:reset?是否像cap deploy:cold一樣簡單地運行遷移?

我已經部署並希望刪除所有數據庫並重新運行所有遷移,但不確定要使用此設置運行哪些命令來執行此操作。

回答

7

我寫了一個小小的文件,您可以通過複製Capistrano的運行任意耙任務:http://jessewolgamott.com/blog/2012/09/10/the-one-where-you-run-rake-commands-with-capistrano/

一旦設置,您可以:

cap sake:invoke task="db:reset" 
+0

當我嘗試運行這個時,我得到:PGError:錯誤:權限被拒絕創建數據庫 – Zephyr4434

+0

您可能還需要monkey-patch db:reset任務,請參閱:http://stackoverflow.com/a/21047289/869616 – Darme

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

對於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 
1

,可以考慮使用capistrano-rails-collection

您也可以直接從存儲庫中的db.rake文件複製代碼。或者,如果您想要一個完整的解決方案來運行遠程服務器上的所有rake任務,請查看Cape gem。