0

我在rails控制台的机器中本地添加了图片,显然当我将所有内容推送到heroku时,我丢失了所有的假数据。

我进入heroku控制台创建3条记录

这就是我所做的

b = Restaurant.find(2)

进而

b.picture = File.open("Users/judyngai/Desktop/spukiesoutside.png")

图片安装是通过carrierwave和rmagick完成的

我收到此错误,

Errno::ENOENT: No such file or directory - Users/judyngai/Desktop/spukiesoutside.png 

该文件确实存在,并且在我的桌面上。我的本地服务器可以看到它,但显然 heroku 不能。如何在 heroku 控制台上手动添加图片?

4

2 回答 2

4

正如 Gavin 所说,Heroku 的文件系统(实际上)是只读的。这有一些例外(tmp 目录),但一般来说,您写入文件系统的任何文件可能在后续请求中都不存在。这是相关的 Heroku 文档:https ://devcenter.heroku.com/articles/dynos#ephemeral-filesystem

作为替代方案,我建议直接上传到 S3,并让您的应用从那里获取文件。由于 Heroku 在 Amazon 的 EC2 网络上运行,因此如果您需要从 S3 将文件读入您​​的应用程序,它的速度非常快。如果您要将它们提供给用户,您可以直接从 S3 存储桶或通过 Amazon CloudFront 执行此操作。

我为此找到的最好的教程是 Ryan Bate 的 RailsCast:http: //railscasts.com/episodes/383-uploading-to-amazon-s3

这是一个专业的插曲,但物有所值。

他还有很多其他的剧集,你可能会觉得有趣。在他的网站上搜索“上传”,你会发现很多有用的提示和技巧。

于 2013-08-14T16:01:18.300 回答
2

Heroku 不允许文件存储,您需要推送到 S3 或其他文件存储服务。

于 2013-08-14T15:26:40.563 回答