gpt4 book ai didi

ruby-on-rails - gem 更新后 : test fail with "Asset was not declared to be precompiled in production"

转载 作者:数据小太阳 更新时间:2023-10-29 06:22:45 28 4
gpt4 key购买 nike

由于我更新了几个 gem,所以所有测试都失败并出现错误:

ActionView::Template::Error: Asset was not declared to be precompiledin production.

Add Rails.application.config.assets.precompile += %w( favicons/manifest.json.erb ) to config/initializers/assets.rb and restart your server

app/views/layouts/_faviconsheader.html.erb:14:in _app_views_layouts__faviconsheader_html_erb__1320

app/views/layouts/application.html.erb:21:in _app_views_layouts_application_html_erb__4340

错误似乎是指部分_faviconsheader.html.erb其中包括以下行:

<%= content_tag :link, nil, rel: :manifest, href: image_path("favicons/manifest.json.erb") %>

此部分加载在 application.html.erb 中: <%= render partial: 'layouts/faviconsheader' %> .

知道是什么原因导致此错误以及该怎么做吗? 在 gem 更新之前,所有测试都已通过。

我使用 Rails 4.2.5。更新的 gem 之一是 sprockets (将 sprockets 更新到版本 3.5.2)。我在 github 上读了一些东西关于 sprockets 4 有问题,但我没有使用版本 4。


附言即使我添加 Rails.application.config.assets.precompile += %w( favicons/manifest.json.erb )config/initializers/assets.rb错误仍然存​​在。但即使这可行,我也想了解为什么会出现这个问题,除了更新一些 gem 之外没有任何更改。

最佳答案

长答案+解释

我认为正确的解决方法是按照错误消息的建议将文件添加到预编译 Assets 中。也许这不能为您解决问题,因为您有一个需要在运行时呈现的 erb 文件。我想如果该文件是一个静态 json 文件,那么在将它添加到预编译 Assets 后您仍然不会遇到这个问题。

当您使用 image_path 帮助程序时,Sprockets 会假设您拥有静态 Assets 。您的应用在 sprockets-rails 3.0 之前没有引发错误这一事实有些令人惊讶。显然,这个新版本在执行标准方面做得更好。 (貌似3.0还有其他问题,可能近期会更新)

如果您需要在 list 中包含 erb,那么最好使用路由路径助手而不是 image_pathasset_path 来获取 url。这将需要您将 list 路由添加到您的 config/routes.rb 文件并通过 Controller 操作呈现 json 文件。 View 文件将是您的 .erb list 。


简答题

在执行 bundler update 将我的 sprockets-rails 版本从 2.3.3 更改为 3.0.0 后,这开始发生在我身上。一个简单的修复方法是在 Gemfile 中将 sprockets-rails 恢复到版本 2.3.3 并再次运行 bundle install:

gem 'sprockets-rails', '2.3.3'

顺便说一句:我在开发环境中遇到了这个问题,并且能够通过运行 rake assets:precompile 修复它。不幸的是,它没有让我的测试通过。

关于ruby-on-rails - gem 更新后 : test fail with "Asset was not declared to be precompiled in production",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34344094/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com