2012-05-13 13 views
2

環境変数(S3認証情報)にアクセスする必要のあるレールタスクを呼び出すcronジョブがあります。 .bashrcに環境変数が設定されていて、コマンドラインからタスクを実行できますが、クレジットが足りないために失敗します。環境変数にいつでもアクセスしてcronジョブを設定する

資格情報をcrontabに追加すると、cronジョブは正常に実行されます。

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

はcronジョブは、特にcrontabファイルでそれらを設定せずに、環境変数にアクセスするための方法はあります:私はそうのように私のschedule.rbでS3の資格情報を追加しているので、私のcrontabはいつでも宝石で生成されますいつでもいつでも宝石を使用していますか?

答えて

0

はい、cronの証拠変数を設定するスクリプトファイルを設定する必要があります。 See SO question

3

これらの環境変数を使用するカスタム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 
関連する問題