【发布时间】: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 日志,看看它使用的是哪个版本的
psychgem? -
感谢您的回复!这是我通过运行
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