2012-02-08 52 views
7

我有一個導入實用程序,我想用它來在heroku上創建記錄。在heroku rake任務期間加載本地文件

我想用它來從我的開發機器上的文件導入數據,而不必將文件檢入到存儲庫中。有沒有辦法用rake任務或heroku gem來做到這一點?

我可以上傳文件的網頁形式,可以超時,或者我可以將文件存儲在S3上,但這似乎相當過分。

任何簡單的方法來做到這一點?

回答

2

不,不可能從任何運行heroku run(包括rake任務,假設你在雪松上)的任何東西訪問開發計算機上的本地文件。

我已經採取以下的方法:

  • 種子數據存儲在回購和加載使用seed_fu

  • 非種子數據被通過網絡的形式上載到S3,和聯到DataFile模型使用回形針(有點矯枉過正,但我​​用它在其他地方的圖像)。然後,我可以使用rake任務或延遲的工作人員來處理這些文件。這絕對是一個開銷。

5

您可以從您的機器上的標準讀取。

heroku run rake whatever <./file 
+2

什麼是對任務定義中訪問該文件數據的語法? – zrisher 2016-02-06 00:46:25

+1

'$ stdin.read'適合我。 – dojosto 2016-06-23 19:43:50

1

我發現一個非常簡單的方法是使用gist作爲輸入數據。您將數據複製並粘貼到要點中,然後將鏈接傳遞給原始要點作爲您的耙子任務的參數。然後在rake任務中打開遠程文件。

例如,如果要加載YAML文件:

YAML.parse(open(file_name)).to_ruby.with_indifferent_access