我正在Docker容器中运行Rails应用程序,但是由于无法可靠地获取JavaScript更改以传播到我在本地主机上运行的应用程序而在开发环境中苦苦挣扎。
说明发现问题的步骤:
admin-7c69920b702f68258e99.js
的形式生成新的缓存耗尽的资产"admin.js": "/packs/admin-7c69920b702f68258e99.js"
admin-4cf5f7c7d6c5ad665fc6.js
。 我尝试了以下过程,但是即使禁用了缓存,它也不会触发资产的刷新。
docker-compose up
我通常必须第二次停止并启动Rails服务器才能触发资产刷新。对于有效的开发环境来说,这有点像巫毒教。
我想找到一种方法来可靠地确保最新资产反映在我的开发环境中,而不必手动在资产文件名上保留选项卡以确认刷新已发生。
是否有技巧可以重新装入可能会丢失的资产?
我正在使用ruby:2.3.7和Rails 5.2.2.1
答案 0 :(得分:0)
我设法解决了这个问题,现在可以重新加载我的JavaScript资产。
我遇到的第一个问题最容易解决,立即解决了在本地计算机上运行的团队成员的问题(即不在Docker容器中)。
webpacker.yml
具有一系列默认值,并且cache_manifest设置为true。这可以解释为什么感觉好像浏览器正在坚持一个旧指令。通过设置cache_manifest: false
这不能立即解决在Docker中运行的应用程序的问题。显然,您需要将webpacker设置为在其自己的容器中运行。请参阅此处的官方Webpacker说明:https://github.com/rails/webpacker/blob/master/docs/docker.md
我发现以下说明最有用:http://paulsturgess.co.uk/blog/2018/01/09/setup-webpacker-webpack-dev-server-with-docker-compose/
因此我已将以下内容添加到我的docker-compose.yml
版本:“ 3” 服务: webpacker: 建立:。 环境: -WEBPACKER_DEV_SERVER_PUBLIC =本地主机:3035 -WEBPACKER_DEV_SERVER_HOST =本地主机 命令:./bin/webpack-dev-server --inline true 数量: -。:/ myapp 端口: -'3035:3035'
然后运行docker-compose up --build
这神奇地解决了重新加载问题。