我将Redmine(www.redmine.org)安装推到Heroku(雪松堆栈)上。在我的Redmine本地实例中,文件上传的工作方式是数据库只是简单地存储一些关于文件的数据,包括文件的名称和位置,文件本身只存储在[app-location]/files
(Redmine是一个ruby-on-rails应用程序)。当我的Redmine项目推到Heroku时,files
目录无处可寻。从我读到的关于Heroku文件系统的文章来看,这并不令人意外。但令人惊讶和困惑的是,文件上传仍然有效,并且我没有设置s3,这是Heroku上文件上传的常见建议。我检查了Heroku数据库以获取有关文件上传的数据。没有s3的Heroku文件备份
下面是我找到该文件的步骤。
heroku run rails c
和 - 获得最新的文件的位置 - 跑:
Attachment.last.diskfile
其返回:
=> "/app/files/2014/06/140610184025_Very-Basic-Globe-icon.png"
此路径根本上不存在Heroku实例(使用heroku run bash
并列出目录或运行查找)。我还下载了Heroku数据库的转储并将其导入本地。数据库数据显示在我的本地实例上,但文件无法找到(没有意外)。
所以我的问题是:
- 哪里Heroku的实例存储中的文件真的吗?
- 有没有办法让我在本地备份这些文件而不依赖于Amazon S3上的 ?
这个应用程序应该保持相当小,所以我不关心大规模的可伸缩性,我只是希望能够得到文件上传,如果有一天需要。
我刚注意到这个回应。谢谢你的时间。自从我放弃了在Heroku上运行Redmine并转而使用Google Server。但是你的回答对于这个问题是适当的。不过,我可能会考虑在将来使用Heroku Scheduler上的脚本。谢谢。 – darkmatter
如何进入实际运行我的应用程序的dyno?我需要确认文件是否真的存在。 – merlinpatt
heroku运行bash – therealklanni