Rails开发 - 你怎么办耙分贝:与Capistrano的复位?(Rails deployment

2019-10-18 05:53发布

我使用的Linode与Ubuntu 10.04和Capistrano的,独角兽,和Nginx的部署。

我该怎么做相当于heroku run rake db:reset与此设置? 它是那样简单cap deploy:cold再次运行迁移?

我已经部署了,想放弃所有数据库并重新运行所有的迁移,但我不知道与此设置运行这样做哪些命令。

Answer 1:

:我通过写Capistrano的一个小小的文件,您可以复制到运行任意rake任务http://jessewolgamott.com/blog/2012/09/10/the-one-where-you-run-rake-commands-with-capistrano /

一旦安装,您可以:

cap sake:invoke task="db:reset"


Answer 2:

对于Capistrano的三无实际删除数据库。 使用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


Answer 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清除数据库。



Answer 4:

如果您正在使用Capistrano的3,考虑使用Capistrano的护栏收集 。

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

或者,如果你想有一个全面的解决方案来运行一个远程服务器上所有的耙任务,检查出开普敦的宝石。



文章来源: Rails deployment - how do you do rake db:reset with capistrano?