我部署了" Harrys Prelauncher"在Heroku上并尝试进行拆解(目前只是测试)。见这里:https://github.com/harrystech/prelaunchr#teardown
运行rake任务后......
heroku run rake prelaunchr:create_winner_csvs
...在" / lib / assets"中创建了一个csv文件,但我不知道如何访问该文件(它在开发中本地工作)。
如何下载或访问该文件?
答案 0 :(得分:2)
Heroku使用的“短暂”文件系统无法保证在运行时保留更改。简单地说,如果它没有被推送到git(我假设你正在使用带有heroku的git),那么它不能保证存在于你的应用程序的所有实例中。它可能存在于其中一个中,但您可能没有简单的方法来访问该特定的文件系统。你不应该,真的。
它就是这样完成的,这样可以无缝地启动同一个应用程序的多个实例。当然,这需要一些规则:在外部存储任何有意义的状态:在数据库中,在外部磁盘上,任何地方。这样做的好处是横向可伸缩性:如果您缺少资源,您可以启动另一个(通常)行为完全相同的Web dyno。新的dynos是从git push
打包的捆绑开始的,因此不包含您在其他实例中所做的任何更改。
解决方法可能正在运行heroku run bash
,因此您最终会进入链接到另一个捆绑实例的交互式shell。
然后您可以制作该文件(通过运行您的rake任务)并以您认为合理的任何方式访问其内容。可以使用cat
将文本文件回显到控制台中,并在其他任何位置进行复制粘贴。那是一种肮脏的方式。
更干净的方法是操纵应用程序通过电子邮件发送有问题的文件。如果Rails应用程序本身调用了rake任务,那么这是少数合理的方法之一。
答案 1 :(得分:1)
我最近在为客户开发Prelaunchr广告系列时遇到了这个问题。假设您有一个本地版本的应用程序,您可以将Heroku数据库“拉”到本地计算机,将其设置为database.yml中的开发数据库,并从本地应用程序运行rake任务,该任务现在应该具有与heroku版本相同的数据库。这是拉取db的命令(用你自己的名称替换name_for_database& heroku_app_name):
heroku pg:pull HEROKU_POSTGRESQL_COPPER_URL name_for_database --app heroku_app_name
确保重新启动本地服务器以查看填充的新数据库信息。