防止capistrano在部署中运行迁移

时间:2016-11-15 10:41:47

标签: ruby-on-rails-4 deployment migration database-migration capistrano3

我在我的应用程序中使用capistrano rails gem。当我运行cap production deploy时,它会部署我的更改,同时运行我的db:migrate并运行所有待定迁移

出于测试原因,我不希望它在部署后运行db:migrate

如何在部署时阻止capistrano运行deploy:migrate,更重要的是我如何看待迁移状态以查看我的所有待定迁移 capistrano将会运行。

对于开发ENV 中的instnace,我可以运行rake db:migrate:status,它会向我显示哪些迁移是updown以及哪些将需要运行。

namespace/function

中的deploy.rb
namespace :deploy do

  after :restart, :clear_cache do
    on roles(:web), in: :groups, limit: 3, wait: 10 do
    end
  end

  desc "reload the database with seed data"
  task :seed do
    puts "\n=== Seeding Database ===\n"
    on primary :db do
      within current_path do
        with rails_env: fetch(:stage) do
          execute :rake, 'db:seed'
        end
      end
    end
  end
end

我的deploy.rb的其余部分包含所有常见内容,例如:

set :applicationset :repo_urlset :passenger_restart_with_touchset :deploy_toset :bundle_binstubsset :linked_filesset :linked_dirs

我的版本:

Rails: 4.2.4

Capistrano: 3.5

1 个答案:

答案 0 :(得分:1)

你有两种初始化Capistrano-Rails宝石的方法。在Capfile,您可以添加require 'capistrano/rails',这将生成资产并运行迁移,或者您可以添加require 'capistrano/rails/assets'和/或require 'capistrano/rails/migrations',这些将执行其中一项,或两者都包括在内。

因此,要不运行迁移,请确保{Caperfile中不包含require 'capistrano/rails'require 'capistrano/rails/migrations'