javan / whenever

Cron jobs in Ruby
MIT License
8.83k stars 727 forks source link

cap development whenever:update_crontab silently succeeds, does nothing #612

Open chronodm opened 8 years ago

chronodm commented 8 years ago

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
chronodm commented 8 years ago

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

dmolesUC commented 8 years ago

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

benlangfeld commented 8 years ago

Please provide trace output of your full Capistrano run.

dmolesUC commented 8 years ago

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
benlangfeld commented 8 years ago

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.

aminin commented 7 years ago

When cap development whenever:update_crontab does nothing

overriding :whenever_roles

# deploy.rb
set :whenever_roles, :all

solves the problem.

sshaw commented 3 years ago

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