【发布时间】:2017-08-17 10:55:45
【问题描述】:
我的 Rails 应用程序中有一个区域设置文件,它可以在 Rails 上正常工作,但是当我尝试将它与 react_on_rails rake 任务 (rake react_on_rails:locale) 一起使用时,我收到了这个错误:
Psych::BadAlias: Unknown alias: item_attributes
发现rake任务基本是调用YAML.safe_load,于是准备了一个没有Rails的最简单的例子,错误依旧。这是示例 Ruby 脚本:
require 'yaml'
YAML.safe_load(File.open('test.yml'))
这是 test.yml 文件(实际语言环境文件的较短版本):
pl:
language: Polski
dictionary_name: simple
activerecord:
attributes:
line_item: &item_attributes
variant: Produkt
quantity: Ilosc
price: Cena Netto
total_price: Wartosc Netto
vat_rate: VAT
total_vat_amount: Kwota VAT
total_gross_price: Wartosc Brutto
order_item:
<<: *item_attributes
我仍然收到错误:
/usr/local/Cellar/ruby/2.3.1/lib/ruby/2.3.0/psych/visitors/to_ruby.rb:402:in `visit_Psych_Nodes_Alias': Unknown alias: item_attributes (Psych::BadAlias)
任何想法为什么这适用于 Rails 但在这里失败?是否有其他方法可以避免 YAML 文件中的重复并使其适用于 Rails 和 YAML.safe_load?
【问题讨论】:
-
我猜
YAML.safe_load不支持<<。如果<<: {foo: bar}有效,你可以试试。如果不是,这不是别名问题。 -
@flyx 是的,它确实有效,所以不是这样
-
确实很奇怪。这里没有 YAML 语法错误,可能涉及到两个不同的 YAML 解析器?
标签: ruby-on-rails ruby yaml react-on-rails