Ruby on rails Webpacker&;Docker-View中的Rails资源管道未指向更新的JS资源
我在Docker容器中运行Rails应用程序,但我在开发环境中挣扎,因为我无法可靠地将javascript更改传播到在localhost上运行的应用程序 识别问题的步骤说明:Ruby on rails Webpacker&;Docker-View中的Rails资源管道未指向更新的JS资源,ruby-on-rails,docker,asset-pipeline,webpacker,Ruby On Rails,Docker,Asset Pipeline,Webpacker,我在Docker容器中运行Rails应用程序,但我在开发环境中挣扎,因为我无法可靠地将javascript更改传播到在localhost上运行的应用程序 识别问题的步骤说明: 如果我刷新视图,我可以在控制台中看到webpacker正在编译 它在public/packsadmin-7c69920b702f68258e99.js manifest.json反映了此更新“admin.js”:“/packs/admin-7c69920b702f68258e99.js” 我可以反复刷新视图,但网络选项卡
- 如果我刷新视图,我可以在控制台中看到webpacker正在编译
- 它在public/packs
admin-7c69920b702f68258e99.js
- manifest.json反映了此更新
“admin.js”:“/packs/admin-7c69920b702f68258e99.js”
- 我可以反复刷新视图,但网络选项卡显示旧资源名为
李>admin-4cf5f7c7d6c5ad665fc6.js
- 刷新浏览器中的视图以触发网页包编译
- 通过崩溃Docker并运行
Docker compose up
- 刷新视图
我正在使用ruby:2.3.7和Rails 5.2.2.1我已经设法解决了这个问题,现在可以实时重新加载我的javascript资产 我遇到的第一个问题是最容易解决的,并立即修复了在本地机器上运行的团队成员的问题(即不在Docker容器中)
- webpacker配置文件
有一系列默认值,其中cache_manifest设置为true。这可以解释为什么浏览器感觉像是在保留旧指令。通过设置webpacker.yml
cache\u清单:false解决
- 因此,我将以下内容添加到我的
docker compose.yml
- 然后运行
docker compose-up--build
version: '3'
services:
webpacker:
build: .
environment:
- WEBPACKER_DEV_SERVER_PUBLIC=localhost:3035
- WEBPACKER_DEV_SERVER_HOST=localhost
command: ./bin/webpack-dev-server --inline true
volumes:
- .:/myapp
ports:
- '3035:3035'