2012-02-08 56 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