【问题标题】:Precompiled CSS File not found with rails 4 asset pipelinerails 4资产管道找不到预编译的CSS文件
【发布时间】:2013-07-30 22:27:34
【问题描述】:

我从 Rails 开始,我有一个在 dev (webrick) 中运行的应用程序。

问题是:预编译的 CSS 文件在生产中没有找到。

现在我将它托管在 heroku 上并进行部署。我有一条消息说资产是预编译的(所以这不是编译错误)并且所有设置都是默认的。

我有 /public/assets 文件夹,一切都在里面。我什至可以cat application-*.css 文件并获得我应该拥有的全部内容。

现在,当我尝试访问 CSS 文件时,它给了我一个错误 404(即使它是使用<%= stylesheet_link_tag "application", :media => "all" %> 自动生成的 CSS 链接)。因此,我对 CSS 链接进行硬编码绝对不是问题。

我不确定接下来要执行什么检查。

如果您对输出感到好奇,目前可公开访问here

【问题讨论】:

    标签: ruby-on-rails heroku asset-pipeline ruby-on-rails-4


    【解决方案1】:

    如果您还没有这样做,请尝试将 config/environments/production.rb 中的配置选项 config.serve_static_assets = false 更改为 config.serve_static_assets = true

    【讨论】:

    • 嗯,这似乎成功了。现在我只需要找出图像。
    • @Erick,该配置也应该注意图像。您看到public/assets/ 目录中的图像了吗?顺便问一下,您是如何引用这些图像的,是使用image_path 助手吗?
    • 我必须承认我通过 /assets/something.jpg 以硬编码的方式引用它们。我会尝试使用 image_path 助手然后看看。
    • @Erick,是的,请继续。这应该解决图像问题。
    • Rails 4.2 有config.serve_static_files = ENV['RAILS_SERVE_STATIC_FILES'].present? - 对于heroku,我只需要heroku config:set RAILS_SERVE_STATIC_FILES=true 就可以了
    【解决方案2】:

    在 Rails 4 中为我解决的唯一问题是

    config.assets.compile = true
    

    config/environments/production.rb

    根据文档,如果错过了预编译资产,这将退回到资产管道。

    【讨论】:

    • 文档还强烈建议不要在生产环境中将此设置为 true 以使应用正常运行 >
    • @bkunzi01 理论上,文档是正确的。但实际上,这只会编译一次,所以我可以冒这个风险 =)
    • 酷你如何强制它在部署后只编译一次?当我允许这样做时,我的应用程序性能会崩溃:(
    猜你喜欢
    • 2012-03-19
    • 2012-04-02
    • 2013-05-28
    • 2013-05-08
    • 1970-01-01
    • 2012-12-21
    • 1970-01-01
    • 1970-01-01
    • 2013-02-27
    相关资源
    最近更新 更多