预编译上传的资产

时间:2011-12-29 01:41:12

标签: ruby-on-rails heroku assets precompiled

我有一个rails 3.1应用程序,用户上传图片。我将它们存储在/ assets / images中,因为这是image_tag寻找的路径,而不是公共/图像。

在开发过程中一切正常但我部署到Heroku并且它给了我这个错误:

  

ActionView :: Template :: Error(image_name.jpeg未预编译)

处理这种情况的正确方法是什么?有没有办法在上传后编译图像,还是应该将它们存储在其他地方?

2 个答案:

答案 0 :(得分:2)

  • 不得使用Heroku上的文件系统来存储上传内容。

  • 您不应该对上传的图片使用image_path,因为这假设它正在查看文件系统。如果您使用image_tag,则必须传递完整的网址,而不仅仅是图片名称。

答案 1 :(得分:1)

您是否使用了carrierwave来上传图片?您可以使用载波将它们存储在亚马逊S3上相当容易。 Carrierwave instructions其他解决方案也可以轻松访问S3存储。

Heroku不允许您在文件系统中存储文件。运行

RAILS_ENV=production bundle exec rake assets:precompile

在本地编译资产,添加到git,然后推送到heroku,但是以后不能通过heroku上的应用程序添加图像。如果您将它们上传到/temp文件夹,它们会在那里停留一段时间,或直到您重新部署/更新我认为的代码。