Cri*_*ian 5 assets ruby-on-rails sprockets webpacker
自从我们将项目的依赖项从 rails 4.2 升级到 rails 5.2 以来,我们遇到了问题
我们同时使用链轮资产和 Webpacker。首次启动服务器并加载第一个页面(任何页面)时,它会在提供页面内容之前挂起。
它通常挂在这样的线上,没有其他输出:
I, [2020-05-15T10:28:20.828146 #66077] INFO -- : [fd7f1413-7d72-402f-92f9-95688e7fa50e] Rendered partials/_front_page_featured_items.html.haml (172.4ms)
Run Code Online (Sandbox Code Playgroud)
ruby 进程似乎空闲,不使用 CPU。
我意识到通过rails assets:precompile在运行服务器之前运行,它不会再挂起,即使我删除了 public/assets 和 public/packs 目录中的预编译资产。
我可以通过以下方式重现它:
tmp/cache我们可以在至少 3 台开发机器和 CI 服务器上重现这一点。
在rails 4.2分支中,我们没有这个问题,我们有相同版本的Webpacker(4.2.2)。
rails 4.2 分支和 5.2 在资产方面的主要区别在于从 sprockets 3.7 升级到 4.0,以及所有其他依赖项更改。
我被困在调试这个问题上,希望能在如何进一步调试这个问题、获得更多输出到日志等方面得到一些帮助。
更新:我在 gemfile 中禁用了 webpacker,它仍然冻结
更新 #2:在链轮上发现了一个相关问题:https : //github.com/rails/sprockets/issues/640。我相信这和我遇到的问题是一样的。
添加以下内容后问题似乎得到解决:
if Rails.env.development? || Rails.env.test?
Sprockets.export_concurrent = false
end
Run Code Online (Sandbox Code Playgroud)
到application.rb
根据https://github.com/rails/sprockets/issues/640,Sprockets 中存在一个可能发生死锁的错误,这是一个解决方法。
| 归档时间: |
|
| 查看次数: |
360 次 |
| 最近记录: |