Je suis complètement déconcerté par la nature de ce problème.Yaml :: load_file agissant différemment entre le développement et la production (Rails)
Nous exportons les données de notre application dans un fichier YAML «nettoyé» (suppression des ID, created_at, etc.). Ensuite, nous (allons) permettre aux utilisateurs d'importer ces fichiers dans l'application - c'est l'importation qui me dérange complètement.
En développement, YAML::load_file(params[:uploaded_data].local_path)
retourne un tableau de YAML :: Objets de (et il n'a pas d'importance du nombre de façons différentes le fichier pourrait être chargé):
[#<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]
Ce qui est très agréable, comme les attributs incluent également les exceptions (modèle associé) pour lesquelles vous voyez un compte d'exception. Cependant, en production (rails 2.3.2, exécution de REE 1.8.7 et 1.8.6 pour les tests, testé sur deux environnements de production différents et production locale), il retourne un tableau des objets dans le YAML - dans ce cas cas, l'événement:
[#<Event title: "Start", amount: #<BigDecimal:3af2640,'0.7E2',4(8)>, repeat_type_id: 0, colour: nil, repeat_interval: 1, exception_count: 0>, etc etc]
maintenant, ce serait tout simplement déroutante si elle comprenait également le modèle associé Exception avec elle - mais il ne fonctionne pas. Quelqu'un peut-il nous éclairer sur la raison pour laquelle l'analyseur Yaml se comporterait si différemment entre la production et le développement?
Je suis sur les rails 2.3.2, en cours d'exécution REE 1.8.7; Cependant, j'ai également testé Ruby 1.8.6 avec exactement les mêmes résultats.
Merci pour toute aide!
Merci Ryan, sur place! L'appel de 'Event' fait que le développement se comporte exactement comme la production, avec les objets Event retournés. Afin d'obtenir le résultat requis (objets Yaml bruts que je peux manipuler), j'ai changé la balise de classe exportée de l'événement et c'était bon à faire. Merci encore pour l'aide! – James