【问题标题】:Prevent capistrano to run migration in deploy防止 capistrano 在部署中运行迁移
【发布时间】:2016-11-15 10:41:46
【问题描述】:

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

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

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

对于开发 ENV 中的实例,我可以运行 rake db:migrate:status,它会告诉我哪些迁移是 updown,哪些迁移将/需要运行。

我的deploy.rb中只有namespace/function

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

【问题讨论】:

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


    【解决方案1】:

    您有两种初始化 Capistrano-Rails Gem 的方法。在您的Capfile 中,您可以添加require 'capistrano/rails',这将生成资产并运行迁移,或者您可以添加require 'capistrano/rails/assets' 和/或require 'capistrano/rails/migrations',这将执行其中之一,或者如果两者都包含,则两者都包含。

    因此,要不运行迁移,请确保 require 'capistrano/rails'require 'capistrano/rails/migrations' 不在您的 Capfile 中。

    【讨论】:

    • 谢谢@will_in_wi
    猜你喜欢
    • 1970-01-01
    • 2011-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-05
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    相关资源
    最近更新 更多