【问题标题】:Precompiling uploaded assets预编译上传的资产
【发布时间】:2011-12-29 01:41:11
【问题描述】:

我有一个 Rails 3.1 应用程序,用户可以在其中上传图片。我将它们存储在 /assets/images 中,因为这是 image_tag 查找的路径,而不是 public/images。

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

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

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

【问题讨论】:

    标签: ruby-on-rails heroku assets precompiled


    【解决方案1】:
    • 不得使用 Heroku 上的文件系统来存储上传内容。

    • 您不应将image_path 用于上传的图像,因为它假定它正在查看文件系统。如果使用image_tag,则必须传递完整的 URL,而不仅仅是图像名称。

    【讨论】:

      【解决方案2】:

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

      Heroku 不会让您将文件存储在文件系统中。运行

      RAILS_ENV=production bundle exec rake assets:precompile

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-01-21
        • 2012-06-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-31
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多