Mat*_*att 7 ruby yaml ruby-on-rails react-on-rails
我的Rails应用程序中的一个语言环境文件可以正常使用Rails,但是当我尝试将它与react_on_rails一起使用时rake task(rake react_on_rails:locale
)我收到此错误:
Psych::BadAlias: Unknown alias: item_attributes
Run Code Online (Sandbox Code Playgroud)
我发现rake任务基本上是调用YAML.safe_load
,所以我准备了没有Rails的最简单的例子,错误仍然存在.这是示例Ruby脚本:
require 'yaml'
YAML.safe_load(File.open('test.yml'))
Run Code Online (Sandbox Code Playgroud)
这是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
Run Code Online (Sandbox Code Playgroud)
我仍然收到错误:
/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)
Run Code Online (Sandbox Code Playgroud)
任何想法为什么这与Rails工作正常但在这里失败?是否有其他方法可以避免YAML文件中的重复并使其适用于Rails和YAML.safe_load
?
ipd*_*ipd 14
我在Psych文档中找到了答案,地址是https://ruby-doc.org/stdlib-2.1.0/libdoc/psych/rdoc/Psych.html.
通过更改aliases参数可以明确允许别名.例如:
x = []
x << x
yaml = Psych.dump x
Psych.safe_load yaml # => raises an exception
Psych.safe_load yaml, [], [], true # => loads the aliases
Run Code Online (Sandbox Code Playgroud)
是否允许别名是safe_load
作为第四个参数传递的布尔值.
归档时间: |
|
查看次数: |
4174 次 |
最近记录: |