我在我的应用程序中使用capistrano rails gem
。当我运行cap production deploy
时,它会部署我的更改,同时运行我的db:migrate
并运行所有待定迁移。
出于测试原因,我不希望它在部署后运行db:migrate
。
如何在部署时阻止capistrano
运行deploy:migrate
,更重要的是我如何看待迁移状态以查看我的所有待定迁移 capistrano
将会运行。
对于开发ENV 中的instnace,我可以运行rake db:migrate:status
,它会向我显示哪些迁移是up
或down
以及哪些将需要运行。
仅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 :application
,set :repo_url
,set :passenger_restart_with_touch
,set :deploy_to
,set :bundle_binstubs
,set :linked_files
,set :linked_dirs
我的版本:
Rails: 4.2.4
Capistrano: 3.5
答案 0 :(得分:1)
你有两种初始化Capistrano-Rails宝石的方法。在Capfile
,您可以添加require 'capistrano/rails'
,这将生成资产并运行迁移,或者您可以添加require 'capistrano/rails/assets'
和/或require 'capistrano/rails/migrations'
,这些将执行其中一项,或两者都包括在内。
因此,要不运行迁移,请确保{Caperfile中不包含require 'capistrano/rails'
和require 'capistrano/rails/migrations'
。