【问题标题】:Rails not precompiling images in the app/assets/images folder?Rails 没有在 app/assets/images 文件夹中预编译图像?
【发布时间】:2016-04-01 00:08:12
【问题描述】:

我的 app/assets/images 文件夹中有一些图片 (svg)。根据 Rails 指南,assets 文件夹中的所有文件都应该自动预编译。

但是,当我使用 image_tag('filename') 引用图像时,它会显示 Sprockets::Rails::Helper::AssetNotPrecompiled 错误

Asset was not declared to be precompiled in production.

它告诉我声明要手动预编译的文件,但为什么必须这样做呢?最重要的是,当我在开发中做所有事情时,为什么它会关注生产环境?

【问题讨论】:

    标签: ruby-on-rails ruby svg


    【解决方案1】:

    如果您在开发中启动服务器后添加了图像,请重新启动服务器。然后 Sprockets 将预编译该图像,错误就会消失。

    【讨论】:

    • 这是我的问题;重新启动服务器修复它。
    • @WardBekker 我标记为已接受的答案实际上是准确描述问题及其解决方案的答案。蒂姆的回答虽然对很多人来说是有效的(正如 cmets 所见),但对我来说却不是。
    【解决方案2】:

    这可能是因为您没有指定完整的图像名称。更新 gem 后我也遇到了这个问题。在我刚刚使用image_tag 'some-image' 之前,但您现在似乎必须指定要使用的图像/扩展类型。

    试试这个:image_tag 'some-image.svg'。它对我有用。

    干杯。

    【讨论】:

    • 刚刚复现问题进行验证。你的解决方案似乎是正确的。我确实很傻。谢谢!
    • 我有同样的问题,即使我输入了整个文件名
    【解决方案3】:

    我很确定 Rails 还不支持 .svg,因此它会忽略它。

    您需要在 config/application.rb 文件中包含文件扩展名:

    #config/application.rb
    config.assets.precompile += %w(.svg)
    

    关于与production 环境相关的应用程序,您必须记住预编译过程意味着用于生产:

    管道的第一个功能是连接资产,这可以减少浏览器为呈现网页而发出的请求数。 Web 浏览器可以并行发出的请求数量有限,因此更少的请求可能意味着更快地加载您的应用程序。

    合并资产本质上意味着将资产文件编译成单个文件,通常是minified

    --

    虽然这可以实时完成,但它主要是静态资产领域(必须预编译)。这意味着,如果您运行 rake asstes:precompile 任务,它将在开发环境中运行,除非您调用 RAILS_ENV=production rake assets:precompile(这会将其设置为该请求的 production 环境。

    当我在开发中做所有事情时,为什么它会关注生产环境

    应用程序将在生产环境中运行,而不是在开发环境中。

    最终,您在开发中所做的一切都应该使生产中的工作变得更容易/更好。就你的资产而言,这意味着你可以使用 Rails 资产管道的许多怪癖,从 sprocketspreprocessors such as SASS & Coffeescript

    【讨论】:

    • 没有。它不仅仅是svg。甚至 app/assets/images 文件夹中的 png 图像也无法被 rails 找到。我根本无法包含任何图像。我不明白为什么。我了解资产管道的工作原理,但我觉得 Rails 不包含资产似乎很奇怪,尽管它声明所有非 CSS 和非 js 资产都自动包含在资产文件夹中。
    • 谢谢你的澄清,让我看看
    • 好吧,我做了一些更改,并且成功了。我不知道哪一项更改起到了作用,但它可能已经从文件名中删除了破折号(-)。感谢您的回答,即使它没有解决问题。
    • 没问题,要我删除吗?
    • 我也有类似的问题。我的 png 文件名中没有 - 。奇怪的是,当从 SCSS 引用时,资产可以很好地访问,而不是通过 image_tag。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-21
    • 1970-01-01
    • 2012-05-03
    • 2013-04-08
    • 1970-01-01
    • 2015-08-25
    • 1970-01-01
    相关资源
    最近更新 更多