在heroku rake任务期间加载本地文件
我有一个导入实用程序,我想用它在 heroku 上创建记录。
我想使用它从开发计算机上的文件导入数据,而无需将文件签入存储库。有没有办法通过 rake 任务或 heroku gem 来做到这一点?
我可以以 Web 表单上传文件,这可能会超时,或者我可以将文件存储在 S3 上,但这似乎相当过分。
有什么简单的方法可以做到这一点吗?
I have an import utility I'd like to use for creating records on heroku.
I want to use that to import data from a file on my development machine without having to check the file into the repository. Is there a way to do this with a rake task or the heroku gem?
I could upload the file in a web form which could time out, or I could store the file on S3, but that seems rather excessive.
Any easy way to do this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您可以从机器上的标准读取。
You can read from standard in on your machine.
我发现一个非常简单的方法是使用要点作为输入数据。您将数据复制并粘贴到要点中,然后将原始要点的链接作为参数传递给 rake 任务。然后在 rake 任务中打开远程文件。
例如,如果您正在加载 yaml 文件:
I have found a really simple approach to this is to use gist for input data. You copy and paste your data into a gist and then pass the link to the raw gist as a param to your rake task. Then in the rake task you open the remote file.
For example, if you are loading a yaml file:
不,不可能从使用
heroku run
运行的任何程序(其中包括 rake 任务,假设您使用的是 cedar)访问开发计算机上的本地文件。我采取了以下方法:
种子数据存储在存储库中并使用seed_fu加载
非种子数据通过a上传到S3 Web 表单,并使用回形针链接到
DataFile
模型(有点矫枉过正,但我在其他地方将其用于图像)。然后我可以使用 rake 任务或延迟作业工作者来处理文件。这绝对是一点开销。No, it's not possible to access local files on your development machine from anything run with
heroku run
(which includes rake tasks, assuming you're on cedar).I've taken the following approach:
seed data is stored in the repo and loaded using seed_fu
Non-seed data is uploaded to S3 via a web form, and linked to a
DataFile
model using paperclip (a little overkill, but I was using it for images elsewhere). I can then use rake tasks or delayed job workers to process the files. It's definitely a bit of overhead.您可以从 rake 任务内部连接到 heroku 数据库。
然后,从本地项目根目录中,您可以运行:
您只需将
my_app
更改为您的应用程序的名称,您可能还需要更改DATABASE_URL
以匹配该名称来自 Heroku 的数据库 url 配置变量。You can connect to the heroku database from inside a rake task.
Then from your local project root, you can run:
You just need to change
my_app
to the name of your app, and you may also need to changeDATABASE_URL
to match the name of your database url config var from Heroku.