Carrierwave在heroku上添加图片

时间:2013-08-14 15:24:33

标签: ruby-on-rails heroku

我在我的机器中在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控制台上手动添加图片?

2 个答案:

答案 0 :(得分:4)

正如Gavin所说,Heroku的文件系统(有效)是只读的。这有一些例外(tmp目录),但通常理解你写入文件系统的任何文件可能不会在后续请求中出现。以下是相关的Heroku文档:https://devcenter.heroku.com/articles/dynos#ephemeral-filesystem

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

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

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

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

答案 1 :(得分:2)

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