我使用capistrano-multiconfig gem进行多次部署的回购。问题是,对于某些应用程序,我想要sikideq任务。像这样的东西:
if fetch(:sidekiq_enabled?)
require 'capistrano/sidekiq'
require 'capistrano/sidekiq/monit'
end
我猜Capfile是在capistrano配置之前加载的。怎么处理这个?
答案 0 :(得分:2)
我遇到了同样的情况,我希望每个项目都需要一些宝石,因为我的命令行模式始终与执行capistrano任务相同,这就是我处理它的方式。
我的模式是这样的:
$ bundle exec cap project:stage namespace:task
解决方案是让我得到第一个参数(这里是project
),以了解它是什么类型的项目,并需要项目的良好配方。
所以在Capfile
中,我写了类似的东西
[...]
# Get project from the command line if any
current_project = ARGV[0].split(':')[0]
magento_projects = ["project_1"]
symfony_projects = ["project_2"]
# Include required tasks per project
if magento_projects.include?(current_project)
require 'capistrano/magento'
end
if symfony_projects.include?(current_project)
require 'capistrano/symfony'
end
[...]
现在当我输入:
$ bundle exec cap project_1:staging deploy
或者:
$ bundle exec cap project_2:production deploy:check
它需要不同的宝石。完成:))