Whenever : Cron tab : Environment selection

For whenever gem Default Rails environment is production. However, you sometime would like to set environment manually for testing purposes.

If you try

$ whenever -h
Usage: whenever [options]
 -s, --set [variables] Example: --set 'environment=staging&path=/my/sweet/path'

if you need to set environment to development then try this

$ whenever --update-crontab --set 'environment=development'


# In schedule.rb
# run this task only on servers with the :app role in Capistrano
# see Capistrano roles section below

# variable `environment` is accessible here; you set from CLI
set :whenever_environment, environment || 'production'

every :day, :at => '12:20am', :roles => [:app] do 
  rake "app_server:task" 

You can list installed cron jobs using crontab -l.


Stripe : Test : Webhook from one env processed by another

You often have environments like staging, qa, development which use the test secrect and publishable keys of Stripe. So you might run in situation when callbacks for one environment is responded success by another environment and it may create problem in testing.

Instead you can pass environment details in meta data and if that callback is not generated for that environment, just raise an exception.

subscription.metadata = {
                          pact_id: pact.id,
                          # To enable one env to ignore (not return 200)
                          #  for webhook event of another environment
                          app_environment: Rails.env