在heroku rake任务期间加载本地文件

时间:2012-02-08 23:10:38

标签: heroku rake

我有一个导入实用程序,我想用它来创建heroku上的记录。

我想用它来从我的开发机器上的文件导入数据,而不必将文件检入存储库。有没有办法用rake任务或heroku gem来做到这一点?

我可以将文件上传到可能超时的网络表单中,或者我可以将文件存储在S3上,但这似乎相当过分。

这么简单吗?

3 个答案:

答案 0 :(得分:6)

您可以在自己的机器上阅读标准输入。

heroku run rake whatever <./file

答案 1 :(得分:2)

不可以,使用heroku run(包括rake任务,假设您使用雪松)运行的任何内容都无法访问开发计算机上的本地文件。

我采取了以下方法:

  • 种子数据存储在repo中并使用seed_fu

  • 加载
  • 非种子数据通过网络表单上传到S3,并使用回形针链接到DataFile模型(有点矫枉过正,但我​​将其用于其他地方的图像)。然后我可以使用rake任务或延迟的作业工人来处理文件。这绝对是一个开销。

答案 2 :(得分:2)

我发现一个非常简单的方法就是将gist用于输入数据。您将数据复制并粘贴到gist中,然后将链接作为rake任务的参数传递给raw gist。然后在rake任务中打开远程文件。

例如,如果要加载yaml文件:

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