簡體   English   中英

Heroku Scheduler沒有像我的Rails開發環境那樣運行代碼

[英]Heroku Scheduler not running code like my Rails dev enviroment

我正在嘗試運行一個代碼片段,該片段將從AWS S3中獲取一個文件並將其保存到我的應用程序中的目錄中。 該代碼段是( s3get.rb ):

#!/usr/bin/env ruby

require 'aws-sdk'

#provide AWS credentials
s3 = Aws::S3::Resource.new(
  region: 'us-east-1',
  access_key_id: 'my_key',
  secret_access_key: 'my_secret_key'
)

#download files from S3
s3.bucket('my_bucket').object('path/in/s3/test.csv').get(response_target: 'lib/assets/data/test.csv')

在我的開發環境中,我可以使用以下命令執行:

load '/path/to/my_app/lib/assets/ruby/s3get.rb'

我將應用程序推送到Heroku並使用以下命令設置了Scheduler Add-on

rails runner "lib/assets/ruby/s3get.rb" -a my_app

我已經heroku logs --ps scheduler了一些路徑,並從heroku logs --ps scheduler命令獲得了各種回報,例如:

2015-05-18T23:49:21.585162+00:00 heroku[scheduler.1]: Process exited with status 0
2015-05-18T23:49:21.591063+00:00 heroku[scheduler.1]: State changed from up to complete

2015-05-18T02:31:50.543973+00:00 app[scheduler.7930]: /app/vendor/bundle/ruby/2.0.0/gems/aws-sdk-core-2.0.39/lib/seahorse/client/plugins/response_target.rb:46:in `initialize': No such file or directory - lib/assets/data/test.csv (Errno::ENOENT)
2015-05-18T02:31:50.543997+00:00 app[scheduler.7930]:   from /app/vendor/bundle/ruby/2.0.0/gems/aws-sdk-core-2.0.39/lib/seahorse/client/plugins/response_target.rb:26:in `block in add_event_listeners'
2015-05-18T02:31:50.543992+00:00 app[scheduler.7930]:   from /app/vendor/bundle/ruby/2.0.0/gems/aws-sdk-core-2.0.39/lib/seahorse/client/plugins/response_target.rb:46:in `new'
...
2015-05-18T02:31:50.544126+00:00 app[scheduler.7930]:   from /app/vendor/bundle/ruby/2.0.0/gems/railties-4.2.1/lib/rails/commands/commands_tasks.rb:90:in `runner'
2015-05-18T02:31:50.544132+00:00 app[scheduler.7930]:   from /app/bin/rails:8:in `require'
2015-05-18T02:31:50.544133+00:00 app[scheduler.7930]:   from /app/bin/rails:8:in `<main>'
2015-05-18T02:31:51.563689+00:00 heroku[scheduler.7930]: State changed from up to complete
2015-05-18T02:31:51.559159+00:00 heroku[scheduler.7930]: Process exited with status 1

我不確定我的Scheduler命令是否不正確,或者我是否誤解了Heroku上的臨時文件系統是如何工作的。 請幫忙。

這是我的理論(可以隨意寫下來)-

您的作業以lib/assets/data/test.csv為目標來獲取文件。

您可能沒有創建lib/assets/data文件夾,並且您的進程沒有創建它的權限。

您需要創建一個空文件夾lib/assets/data並添加一個.gitkeep文件,以確保在git存儲庫中不會忽略該文件夾(假設您正在使用git)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM