We use the 
  whenever
  
    Show archive.org snapshot
  
 gem to automatically update the crontab of the servers we deploy to. By default, whenever will update all servers with a matching role (we use the :cron role ).
This card describes how to install some tasks only for a given Rails environment or for a given Capistrano stage ("deployment target").
Installing jobs only for a given Rails environment
In your schedule.rb you may use environment variable to access the Rails environment of the current deployment:
if environment == 'staging'
  every :day do
    # Setup job that will only run for Rails environment "staging"
  end
end
You may test the cron output like this (no changes will be made to your crontab):
bundle exec whenever --set environment=staging
bundle exec whenever --set environment=production
Installing jobs only for a given Capistrano stage
In some apps we have custom capistrano stages like this:
customer1-staging
customer1-production
customer2-staging
customer2-production  
Installing a job for only some of these stages requires a little more code.
First, in our deploy.rb we extend the 
  default environment variables
  
    Show archive.org snapshot
  
 for the whenever command. The following will make the capistrano stage available as an environment variable named STAGE:
set :whenever_command_environment_variables, ->{ fetch(:default_env).merge(rails_env: fetch(:whenever_environment), stage: fetch(:stage)) }
You may now access ENV['STAGE'] in your schedule.rb:
if ENV['STAGE'] == 'customer1-staging'
  every :day do
    # Setup task that will only run for Capistrano stage "customer1-staging"
  end
end
You may test the cron output like this (no changes will be made to your crontab):
STAGE=customer1-staging bundle exec whenever
STAGE=customer2-staging bundle exec whenever