我有一个旧的Rails应用程序,我试图升级到Rails 7。在升级过程中,我破坏了资产管道。当我更新javascript文件时,除非我运行rails assets:precompile
并重新启动服务器,否则更改是不可见的。
当我运行rails assets:precompile
时,我在public/assets文件夹中得到了一堆编译过的JS和CSS资产,这看起来像是资产管道流程的过时版本。
这个项目是我的一个个人项目,我已经做了很多年了,它跨越了从Rails 4到7的版本。它从来没有一个用户基础,它只是一个想法,我经常回去工作。所以我有可能有一个旧版本的资产管道在运行。
我从头开始创建了一个新的Rails 7项目,它的工作和预期的一样。我一直试图让新项目尽可能接近我现有的项目,以查看我当前的项目在哪里失败,但这变得非常困难,而且还没有产生任何结果。
我肯定我一定有一些旧的配置仍然在地方,但我不知道在哪里寻找。我不记得以前有过这个问题。我希望任何建议,在哪里寻找旧的坏应用程序和新的工作之间的差异。
1条答案
按热度按时间azpvetkf1#
我是这样开始的:
rails new
.深入挖掘应用生成器,你可以只生成必要的文件:但你可能想做:
删除
app/javascript/packs
和webpacker相关的东西,比如javascript_pack_tag
。新的javascript条目是
app/javascript/application.js
。您必须使用esbuild构建它才能在您的布局中使用:编译后的文件存放在
app/assets/builds/
中,这个目录在app/assets/config/manifest.js
中,所以每个文件都可以在生产环境中预编译。您的布局中应该包含以下内容:
不要预编译,它不是解决方案。也运行此命令以撤消,这不是可选的:
bin/rails assets:precompile
用于生产,而不是开发。就javascript而言,如果编译无误,它应该可以工作并重新加载。这些是简化的升级步骤,但人们说资产无法重新加载的次数太多了,我无法重现。大多数情况下,这些是解决方案: