Whenever: cap development whenever:update_crontab silently succeeds, does nothing

Created on 22 Apr 2016  路  7Comments  路  Source: javan/whenever

When I run cap development whenever:update_crontab, it appears to silently succeed, with no output, and the crontab on the server is not updated. Likewise, cap development deploy shows no whenever-related activity.

In my Capfile:

require 'whenever/capistrano'

In deploy/development.rb:

In my deploy.rb:

set :whenever_identifier, -> { "#{fetch(:application)}_#{fetch(:stage)}" }
set :whenever_environment, -> { fetch(:stage, 'production') }

My schedule.rb:

set :output, 'logs/dash2-harvester.log'

every 15.minutes do
  command "STASH_ENV=#{@environment} /apps/dash2/apps/dash2-harvester/bin/harvest.sh"
end
capistrano awaiting-feedback bugfix

Most helpful comment

When cap development whenever:update_crontab does nothing

overriding :whenever_roles

# deploy.rb
set :whenever_roles, :all

solves the problem.

All 7 comments

I can manually run bundle exec whenever --update-crontab on the deployed server, and that works.

Although it doesn't set the environment correctly (it's always production).

Please provide trace output of your full Capistrano run.

For what it's worth:

$ bundle exec cap development whenever:update_crontab --trace
** Invoke development (first_time)
** Execute development
** Invoke load:defaults (first_time)
** Execute load:defaults
** Invoke bundler:map_bins (first_time)
** Execute bundler:map_bins
** Invoke whenever:update_crontab (first_time)
** Execute whenever:update_crontab

Please provide your full Capistrano config. Please also check that you have a server attached to Whenever's default role of :db. If this is not suitable, perhaps try overriding :whenever_roles. This is probably related to https://github.com/javan/whenever/pull/539.

When cap development whenever:update_crontab does nothing

overriding :whenever_roles

# deploy.rb
set :whenever_roles, :all

solves the problem.

Having a similar issue. When a server has a single role, it works, when a server has multiple roles, only the Whenever comments are added to the user's crontab:

server "xxx", :user => "yyy", :roles => %w[web app db]
server "xxx", :user => "yyy", :roles => %w[jobs]

set :whenever_roles, :all

schedule.rb:

every 2.minutes, :roles => [:web] do  # %w[web app db] does not work either 
  # Results in a crontab with just the Whenever comment 
end

every 12.hours, :roles => [:jobs] do
  # Works fine
end
Was this page helpful?
0 / 5 - 0 ratings