【发布时间】:2014-06-11 16:42:13
【问题描述】:
我有一个 Redmine (www.redmine.org) 安装推到 Heroku(雪松堆栈)上。在我本地的 Redmine 实例上,文件上传的工作方式是数据库简单地存储一些关于文件的数据,包括文件在磁盘上的名称和位置,而文件本身只是存储在磁盘上 [app-location]/files (Redmine是一个 ruby-on-rails 应用程序)。当我的 Redmine 项目被推送到 Heroku 时,找不到 files 目录。根据我对 Heroku 文件系统的了解,这不足为奇。但令人惊讶和困惑的是,文件上传仍然有效,而且我没有设置 s3,这是 Heroku 上文件上传的常见建议。我检查了 Heroku 数据库以获取有关文件上传的数据。
这是我找到文件的步骤。
heroku run rails c
and -获取最新文件的位置 - 运行:
Attachment.last.diskfile
返回:
=> "/app/files/2014/06/140610184025_Very-Basic-Globe-icon.png"
Heroku 实例上根本不存在此路径(使用heroku run bash 并列出目录或运行查找)。我还下载了 Heroku 数据库的转储并在本地导入。数据库数据显示在我的本地实例上,但找不到该文件(不足为奇)。
所以我的问题是:
- Heroku 实例真正将文件存储在哪里?
- 有没有办法让我在本地备份这些文件而不依赖 在 Amazon s3 上?
这个应用程序应该保持相当小,所以我不关心大规模的可扩展性,我只是希望能够在需要时获得文件上传。
【问题讨论】:
标签: ruby-on-rails heroku backup attachment redmine