【问题标题】:NoMethodError: undefined method `unsafe_load' for Psych:Module (I18n::InvalidLocaleData)NoMethodError:Psych:Module (I18n::InvalidLocaleData) 的未定义方法“unsafe_load”
【发布时间】:2021-08-26 22:54:00
【问题描述】:

我有一个托管在 Heroku 上的 rails 应用程序。由于某种原因,应用程序崩溃并在 heroku 控制台中运行 rails 控制台会出现此错误,尽管该应用程序不是多语言的,因此根本没有使用 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)

我没有在本地主机上收到这样的错误,只有在 Heroku 上。

【问题讨论】:

  • ActiveRecord 甚至对英语也使用外部化字符串,所以无论如何你都会得到一定程度的 i18n。你能检查一下 Heroku 日志,看看它使用的是哪个版本的 psych gem?
  • 感谢您的回复!这是我通过运行gem list psych => psych (4.0.1, default: 3.1.0, 2.2.4) 得到的
  • 我在本地使用 spree 4.2.5 和 psych 3.1.0 遇到了这个问题。如果我删除 Gemfile.lock 并重新生成,我确实会收到此错误。但是,如果我只是使用bundle install 更新锁定文件,它就可以工作。我不知道为什么。比较锁文件,rails 从 6.1.4 到 6.1.4.1,所以也许就是这样。

标签: ruby-on-rails heroku internationalization


【解决方案1】:

至少在我的安装中,工作的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 的依赖项中一定存在不兼容问题。反正这是我的猜测。

【讨论】:

  • 非常感谢您的帮助!问题解决了!
【解决方案2】:

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

应该解决问题

【讨论】:

  • 我可以确认要求bootsnap ~&gt; 1.8.1 确实可以解决问题。
猜你喜欢
  • 1970-01-01
  • 2015-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-26
  • 2016-05-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多