1

我正在使用 Linode 和 Ubuntu 10.04 和 Capistrano、Unicorn 和 Nginx 进行部署。

我如何heroku run rake db:reset使用此设置进行等效操作?是否像cap deploy:cold再次运行迁移一样简单?

我已经部署并希望删除所有数据库并重新运行所有迁移,但不确定使用此设置运行哪些命令来执行此操作。

4

4 回答 4

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"
于 2013-06-04T20:10:00.690 回答
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
于 2015-03-19T18:43:33.170 回答
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清除数据库。

于 2013-06-04T20:06:41.407 回答
2

如果您使用的是 Capistrano 3,请考虑使用capistrano-rails-collection

您还可以使用直接从存储库中的db.rake文件复制代码。

或者,如果您想要一个完整的解决方案来在远程服务器上运行所有 rake 任务,请查看Cape gem。

于 2015-12-20T08:42:03.630 回答