【问题标题】:Rails Assets Precompile Failed Assertion `tag <= GUMBO_TAG_LAST' failedRails 资产预编译失败断言 `tag <= GUMBO_TAG_LAST' 失败
【发布时间】:2021-12-23 18:12:23
【问题描述】:

谁能解决这个问题,我从昨晚开始就找不到解决方案了。

我尝试将我的应用程序从 ruby​​ 2.3.x 升级到 ruby​​ 2.6.x,并将 rails 从 4.2.x 升级到 rails 5.2.x, 我的应用在我的 Mac 上运行良好,包括资产预编译。

然后使用新的 ubuntu os 20.04.2 LTS从旧服务器迁移到新的暂存服务器 (gcp)

我在部署和手动运行时遇到此错误:

user@app-focal:/var/www/html/app/releases/20211223175449$ RAILS_ENV=staging ~/.rvm/bin/rvm 2.6.8@app do bundle exec rake assets:precompile
I, [2021-12-24T00:56:12.981740 #108442]  INFO -- : Writing /var/www/html/app/releases/20211223175449/public/assets/tinymce-5c5b8b58ae365223e6d3f58192e4d1ca79f4b920f237f3d3a985d6221f658c25.js.gz
ruby /var/www/html/app/shared/bundle/ruby/2.6.0/bin/rake assets:precompile: tag.c:181: gumbo_normalized_tagname: Assertion `tag <= GUMBO_TAG_LAST' failed.
Aborted (core dumped)

堆栈:

  • rvm 1.29.12
  • 捆绑器 2.3.0
  • 红宝石 2.6.8
  • 导轨 5.2.6
  • nodejs 14.16.0 / 16.13.1 / 17.3.0

【问题讨论】:

  • 我们需要查看tag 的声明/初始化/赋值的代码。此外,对于定义它的必要.h 文件的both 旧版本和新版本,GUMBO_TAG_LAST 的值是多少? (例如)在旧版本中,它可能是 20,但在新版本中,它可能是 10,tag 在这两种情况下都可能是 15。或者,尽管可能性较小,但可能是 tag 具有不同的 rev-to-rev 值。您可以添加printf 以显示assert 上方的值并再次尝试这两个版本
  • @CraigEstey 搞定了,我用gem nokogiri,而且也升级了,所以需要降级,错误就没有了。

标签: c ruby-on-rails nokogiri


【解决方案1】:

这不是解决方案,但我尝试制定短期解决方案。

当您尝试升级您的 rails 应用程序时,您需要一个计划并从各个方面分析您当前的应用程序。

我的问题很常见。我尝试捆绑更新,但我的 Gemfile 上的一些 gem 没有设置版本,所以升级了一些 gem,包括 nokigiri。我的应用程序太旧了,尤其是资产。我的资产无法使用新版本的nokogiri 进行预编译,所以我只是将其降级并且错误消失了。

然后我会发现问题,为什么在我的本地机器(mac)上运行良好,但在服务器上却没有。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-17
    • 2021-11-12
    • 2014-06-27
    • 1970-01-01
    相关资源
    最近更新 更多