2

環境変数 (S3 資格情報) へのアクセスが必要な rails タスクを呼び出す cronjob があります。.bashrc に環境変数が設定されていて、コマンド ラインからタスクを実行できますが、資格情報がないために cron ジョブが失敗します。

資格情報を crontab に追加すると、cronjob が正常に実行されます。私のcrontabはwhen gemで生成されるので、次のようにS3クレデンシャルをSchedule.rbに追加しました:

# aws credentials
env :AWS_S3_KEY, ENV['AWS_S3_KEY']
env :AWS_S3_SECRET, ENV['AWS_S3_SECRET']

cronジョブがcrontabファイルで特に設定せずに環境変数にアクセスする方法はありますか?

4

2 に答える 2

4

これらの環境変数を取り込むカスタムjob_typeを定義する必要があります。例のschedule.rbは次のようになります。

every 1.day do 
  job_type :my_custom_rake_job, "cd :path && RAILS_ENV=:environment AWS_S3_KEY=:aws_s3_key AWS_S3_SECRET=:aws_s3_secret bundle exec rake :task --silent :output"
  my_custom_rake_job 'foo:bar', :aws_s3_key => @aws_s3_key, :aws_s3_secret => @aws_s3_secret
end

crontabを更新するたびに実行するには、bashで次のようにします。

whenever --set "aws_s3_key=$AWS_S3_KEY&aws_s3_secret=$AWS_S3_SECRET" --update-crontab 
于 2012-09-14T18:18:46.717 に答える
0

はい、cron の環境変数を設定するスクリプト ファイルを設定する必要があります。SOの質問を参照してください

于 2012-05-13T15:50:12.487 に答える