我在schedule.rb有一份工作
set :output, File.expand_path('../log/whenever.log', __FILE__)
set :job_template, "bash -l -c 'source ~/.bashrc ; :job'"
every 1.day, :at => '12:01 am' do
runner "MyModel.do_something"
end在我的阶段部署(bash)脚本中,我有下面一行代码要写到cron:
ssh $SERVER "cd $DEPLOY_TO && whenever --set environment=staging -w"在生产部署脚本中有下面这一行:
ssh $SERVER "cd $DEPLOY_TO && whenever --set environment=production -w"这可以很好地工作,并在我部署任一环境时创建作业。问题是,无论何时,只要将它们都视为一个作业,它就会被最后部署的环境覆盖:
# Begin Whenever generated tasks for: /Users/simon/apps/myapp/staging/config/schedule.rb
1 0 * * * bash -l -c 'source ~/.bashrc ; cd /Users/simon/apps/myapp/staging && script/rails runner -e staging 'MyModel.do_something' >> /Users/simon/apps/myapp/staging/log/whenever.log 2>&1'
# End Whenever generated tasks for: /Users/simon/apps/myapp/staging/config/schedule.rb还有..。
# Begin Whenever generated tasks for: /Users/simon/apps/myapp/production/config/schedule.rb
1 0 * * * bash -l -c 'source ~/.bashrc ; cd /Users/simon/apps/myapp/production && script/rails runner -e production 'MyModel.do_something' >> /Users/simon/apps/myapp/production/log/whenever.log 2>&1'
# End Whenever generated tasks for: /Users/simon/apps/myapp/production/config/schedule.rb在同一台服务器上为两个不同的环境添加相同的cron作业的明智方法是什么?
发布于 2011-10-18 22:23:35
您可以通过使用类似于以下内容的内容来命名namespace任务的空间:
# Whenever
set :whenever_environment, defer { stage }
set :whenever_identifier, defer { "#{application}-#{stage}" }
require "whenever/capistrano"在上面的示例中,stage是包含环境的变量。将其更改为您正在使用的内容。
如果您需要的话,https://github.com/javan/whenever上的Capistrano集成部分将进行更详细的介绍。
发布于 2016-01-20 14:09:28
对于capistrano-v3-integration,将require "whenever/capistrano"添加到Capfile,并将set :whenever_identifier, ->{ "#{fetch(:application)}_#{fetch(:stage)}" }设置为config/deploy.rb
https://stackoverflow.com/questions/7628782
复制相似问题