Je cherche une possibilité de déclarer une constante Magick :: StyleType dans un fichier .yml puis de charger cette constante dans un fichier ruby. Ou si ce n'est pas possible alors j'ai besoin de savoir comment convertir une chaîne en une constante Magick :: StyleType dans ruby.Comment déclarer une constante ruby (RMagick) dans un fichier YAML
Voici les détails:
Je suis en train d'écrire un programme rubis, qui place un texte sur une image et j'utiliser l'interface RMagick pour elle. Dans mon programme ruby, j'ai une méthode qui spécifie différentes propriétés du texte comme font-family ou font-style. Cette méthode comprend la ligne:
self.font_style = ItalicStyle
Maintenant, je veux enregistrer tous les paramètres modifiables dans un fichier YAML-config (config.yml), donc ce config.yml comprend ces lignes:
#font style (like bold, italic and so on)
:font_style: ItalicStyle
maintenant Je charge le config.yml dans mon dossier rubis et la ligne mentionnée ci-dessus dans ma méthode lit maintenant comme suit
self.font_style = config_file[:font_style]
Quand je lance mon fichier ruby maintenant je reçois le message d'erreur:
`font_style=': wrong enumeration type - expected Magick::StyleType, got String (TypeError)
Ainsi, après avoir cherché un peu sur le sujet que je changé mon config.yml premier à
:font_style: !/ruby/constant ItalicStyle
qui m'a comme ci-dessus le même message d'erreur et j'ai essayé ceci:
:font_style: !/ruby/symbol :ItalicStyle
et a obtenu ce message d'erreur:
`font_style=': wrong enumeration type - expected Magick::StyleType, got Symbol (TypeError)
Le n Je suis arrivé irb:
require 'rmagick' => true
Magick.const_get(ItalicStyle) => ItalicStyle=2
Magick.const_get(ItalicStyle).class => Magick::StyleType
Alors, enfin je reçois à ma question: Comment puis-je changer la ligne
:font_style: !/ruby/symbol :ItalicStyle
dans mon fichier config.yml de sorte que lorsqu'il est chargé dans mon rubis le fichier ItalicStyle sera reconnu comme une constante Magick :: StyleType?
Ou quand je quitte
:font_style: ItalicStyle
dans le config.yml et charge le ItalicStyle en tant que chaîne dans mon fichier ruby: est-il possible, pour convertir ItalicStyle d'une chaîne à l'Magick: StyleType constante le fichier ruby directement?
Je serais vraiment heureux si quelqu'un pouvait vous aider. J'ai essayé pendant des jours pour trouver une solution et j'en ai vraiment besoin pour mon projet.
Quel est le problème avec ** dumping ** les valeurs par défaut dans yaml pour examiner à quoi elles devraient ressembler? Pour la solution appropriée, voir la réponse de @spickermann ci-dessous. – mudasobwa