Sinatraアプリでいつでもgemを使用してcronジョブを作成しています。私はいつでも/ capistranoを使って、ジョブがデプロイ時に作成/更新されるようにしています。これは私のデプロイスクリプトのたびセットアップです:Sinatraアプリケーションの/ capistranoが間違った環境変数を設定すると、cronジョブが生成される
require 'whenever/capistrano'
set :environment_variable, 'RACK_ENV'
set :whenever_roles, ->{ :app }
set :whenever_command, ->{ [:bundle, :exec, :whenever] }
set :whenever_command_environment_variables, ->{ { rack_env: fetch(:whenever_environment), rails_env: nil } }
set :whenever_identifier, ->{ "#{fetch(:application)}_#{fetch(:stage)}" }
set :whenever_environment, ->{ fetch :rack_env, fetch(:stage, "production") }
set :whenever_variables, ->{ "environment=#{fetch :whenever_environment}" }
set :whenever_update_flags, ->{ "--update-crontab #{fetch :whenever_identifier} --set #{fetch :whenever_variables}" }
set :whenever_clear_flags, ->{ "--clear-crontab #{fetch :whenever_identifier}" }
私が展開するとき、私はカピストラーノは、crontabの更新を実行し、それが適切な環境変数が使用されようとしているように思えることがわかります。
INFO [8b4f49a6] Running ~/.rvm/bin/rvm default do bundle exec whenever --update-crontab sidekiq-monitor-ua_staging --set environment=staging --roles=app as [email protected]
DEBUG [8b4f49a6] Command: cd /var/www/sidekiq-monitor-ua/releases/20160725170122 && (RACK_ENV=staging RAILS_ENV= ~/.rvm/bin/rvm default do bundle exec whenever --update-crontab sidekiq-monitor-ua_staging --set environment=staging --roles=app)
DEBUG [8b4f49a6] [write] crontab file updated
crontabのはrakeタスクを実行するとき
# Begin Whenever generated tasks for: sidekiq-monitor-ua_staging
0,5,10,15,20,25,30,35,40,45,50,55 * * * * /bin/bash -l -c 'cd /var/www/sidekiq-monitor-ua/releases/20160725170122 && RAILS_ENV=staging bundle exec rake log_sidekiq_status --silent >> /dev/null 2>&1'
# End Whenever generated tasks for: sidekiq-monitor-ua_staging
その結果、RACK_ENVが設定されていません:
はしかし、これは私が(これは私のステージング環境にデプロイ生成された)のcrontabに得るものですコードが開発環境にデフォルト設定されているため、コードが正しく実行されません。
何か不足しているか、設定ミスがあります。私は誰かが助けることを望む。ジョブの種類についてgithubのREADMEたびに言及