NoMethodError: undefined method `unsafe_load' for Psych:Module (I18n::InvalidLocaleData)

NoMethodError: undefined method `unsafe_load' for Psych:Module (I18n::InvalidLocaleData)

我在 Heroku 上托管了一个 rails 应用程序。由于某种原因,该应用程序崩溃了,并且 运行 rails 控制台进入 heroku 控制台时出现此错误,尽管该应用程序不是多语言的,因此根本没有使用 I18n。

你知道哪里出了问题吗?

1: from /app/vendor/bundle/ruby/2.6.0/gems/i18n-1.8.10/lib/i18n/backend/base.rb:241:in `load_yml'
/app/vendor/bundle/ruby/2.6.0/gems/i18n-1.8.10/lib/i18n/backend/base.rb:245:in `rescue in load_yml': can not load translations from /app/vendor/bundle/ruby/2.6.0/gems/activesupport-6.1.3.2/lib/active_support/locale/en.yml: #<NoMethodError: undefined method `unsafe_load' for Psych:Module (I18n::InvalidLocaleData)

我在 localhost 上没有遇到这样的错误,只有在 Heroku 上才出现。

至少在我的安装中,工作 Gemfile.lock 和不工作之间的区别是 bootsnap 的版本:

--- Gemfile.lock        2021-08-26 23:12:52.090787013 -0400
+++ Gemfile.lock.bad    2021-08-26 23:07:36.116432150 -0400
@@ -198,7 +198,7 @@
       aws-eventstream (~> 1, >= 1.0.2)
     bcrypt (3.1.16)
     bindex (0.8.1)
-    bootsnap (1.7.7)
+    bootsnap (1.8.0)
       msgpack (~> 1.0)
     bootstrap (4.6.0)
       autoprefixer-rails (>= 9.1.0)

gem 的依赖项中一定存在不兼容性。反正这是我的猜测。

bootsnap 1.8.1 刚刚发布并修复了问题

https://github.com/Shopify/bootsnap/commit/1d14e2582412e5a982c895638c26278281b01cff

https://github.com/Shopify/bootsnap/releases/tag/v1.8.1

因此,将您的 Gemfile 更改为

gem "bootsnap", "~> 1.8.1"

和运行

bundle update bootsnap

应该可以解决问题