繁体   English   中英

Yaml :: load_file在开发和生产之间的作用不同(Rails)

[英]Yaml::load_file acting different between development and production (Rails)

我完全为这个问题的性质感到困惑。

我们将数据从应用程序导出到“清除的” YAML文件中(去除ID,created_at等)。 然后,我们(将)允许用户将这些文件导入回应用程序-正是导入完全使我烦恼。

在开发过程中, YAML::load_file(params[:uploaded_data].local_path)返回YAML :: Objects的数组(与文件加载的不同方式无关)

[#<YAML::Object:0x3c63984 @class="Event", @ivars={"attributes"=>{"exception_count"=>"0", "title"=>"Start", "amount"=>"70.00", "colour"=>nil, "repeat_type_id"=>"0", "repeat_interval"=>"1"}}>, etc etc]

这非常好,因为属性还包括您看到exception_count的(关联模型)异常。

但是,在生产环境中(在测试中运行REE 1.8.7和1.8.6的Rails 2.3.2,在两个不同的生产环境中进行测试并在本地运行生产环境),它会在YAML中返回一系列对象-在这种情况下,事件:

[#<Event title: "Start", amount: #<BigDecimal:3af2640,'0.7E2',4(8)>, repeat_type_id: 0, colour: nil,  repeat_interval: 1, exception_count: 0>, etc etc]

现在,如果它还包含关联的模型Exception,那将是令人困惑的-但是事实并非如此。

谁能完全了解为何Yaml解析器在生产和开发之间的行为会如此不同?

我在2.3.2上运行REE 1.8.7; 但是我也测试了运行Ruby 1.8.6的结果。

谢谢你的帮助!

我认为这可能是由于在生产中将cache_classes设置为true以及在开发中将false设置为false YAML::load_file方法将尝试查找与这些对象有关的类,并且由于尚未加载它们,因此只会将它们创建为YAML对象。

只需通过调用Event首先尝试“加载” Event类,然后查看是否可以解决该问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM