2016-07-25 15 views
0

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たびに言及

答えて

0

environment_variable:https://github.com/javan/whenever#define-your-own-job-types

ここではデフォルトのすくい仕事

雇用形態:熊手、「CD:パス& &:environment_variable =:環境バンドルのexec熊手:タスク--silent:出力」 雇用形態:ランナー、 "CD:パス& &ビン/レールは-eランナー:環境を ':タスク':出力"

:環境変数のデフォルトは「RAILS_ENV」

以下で試すことができます。

require 'whenever/capistrano' 
set :environment_variable, 'RACK_ENV' 
set :whenever_roles,  ->{ :app } 
set :whenever_command,  ->{ [:bundle, :exec, :whenever] } 
set :whenever_command_environment_variables, ->{ {} } 
set :whenever_identifier, ->{ "#{fetch(:application)}_#{fetch(:stage)}" } 
set :whenever_environment, ->{ fetch :rack_env, fetch(:stage, "production") } 
set :whenever_variables, ->{ "'environment=#{fetch :whenever_environment}&environment_variable=RACK_ENV'" } 
set :whenever_update_flags, ->{ "--update-crontab #{fetch :whenever_identifier} --set #{fetch :whenever_variables}" } 
set :whenever_clear_flags, ->{ "--clear-crontab #{fetch :whenever_identifier}" } 
関連する問題