Rails 7 ActionController::RoutingError 刺激控制器带有过时的摘要

问题描述 投票:0回答:1

编辑: 一个比我原来的问题更简单的例子,我的 CSS 遇到了相同的缓存问题。使用

dartsass-rails
gem,
bin/rails dartsass:watch
正在开发中。默认配置。对我的 SASS 文件的更改会引发错误,因为 Rails 会寻找过时的摘要。

ActionController::RoutingError (No route matches [GET] "/assets/application-01d05ee418a658bda88e5c4b0f5b5b1e7610df787a559e2151838d567ecfe62d.css"):

(原帖如下)

我有一个刺激控制器

app/javascript/editor/section.js
。我使用默认的 Rails 7 配置,使用导入映射和 Stimulus。我在
development
环境中本地运行 Puma,默认配置没有更改。

每当我对刺激控制器进行更改时,Web 服务器都不会接收更改,并继续查找过时的控制器摘要,抛出 404 错误。

Javascript 控制台错误如下:

GET http://localhost:3000/assets/editor/section-ca5da14b07bf02053399e5391d999b5870acc0d8783bb5d7844ce5a22f2278da.js 
net::ERR_ABORTED 404 (Not Found)

Failed to register controller: editor (controllers/editor_controller) Error: 404 Not Found 
http://localhost:3000/assets/editor/section-ca5da14b07bf02053399e5391d999b5870acc0d8783bb5d7844ce5a22f2278da.js 
imported from http://localhost:3000/assets/controllers/editor_controller-0…31577c25719d88e9ca691b7736994a3335959f5513834f370414835d3.js

Puma 控制台也抱怨:

ActionController::RoutingError (No route matches [GET] "/assets/editor/section-ca5da14b07bf02053399e5391d999b5870acc0d8783bb5d7844ce5a22f2278da.js"):

错误原因已知:文件已更改并已重建,因此摘要已更改。我只是不明白为什么没有立即获取更新的文件。

我观察了 Firefox 和 Chrome 中的行为,并为两者启用了

Disable HTTP Cache (when toolbox is open)
选项。重新启动 Puma Web 服务器也可以解决该问题。

ruby-on-rails ruby-on-rails-7 stimulusjs import-maps
1个回答
0
投票

我在使用带有 importmaps 的刺激时遇到了类似的问题,但我的问题是由我的刺激控制器位于

app/components
目录中的视图组件中引起的,其中 importmap-rails gem 缓存扫描不会隐式观看,所以我有在 config/application.rb:

中添加此行

config.importmap.cache_sweepers << config.root.join("app/components")

您的刺激控制器似乎位于

app/javascript
中,默认情况下应该观看它。

也许您可以尝试在本地缓存清除代码中放置调试器断点?

即。

  • 确保您的 Gemfile 中有 'debug' gem
  • bundle open importmap-rails
  • 在各个位置添加
    debugger
    语句(例如 lib/engine.rb)以了解发生了什么
© www.soinside.com 2019 - 2024. All rights reserved.