Я ищу возможность объявить константу Magick :: StyleType в файле .yml, а затем загрузить эту константу в файл ruby. Или, если это невозможно, мне нужно знать, как преобразовать String в константу Magick :: StyleType в ruby.Как объявить константу ruby (RMagick) в файле YAML
Вот подробности:
Я пытаюсь написать программу рубин, который помещает текст на картинке, и я использую интерфейс RMagick для него. В моей рубиновой программе у меня есть метод, который задает разные свойства текста, такие как font-family или font-style. Этот метод включает в себя строку:
self.font_style = ItalicStyle
Теперь я хочу, чтобы хранить все изменяемые параметры в YAML-файле конфигурации (config.yml), так что это config.yml включает в себя следующие строки:
#font style (like bold, italic and so on)
:font_style: ItalicStyle
сейчас Я загрузить config.yml в моем файле рубинового и упомянутые выше линии в моем методе читает прямо сейчас
self.font_style = config_file[:font_style]
Когда я запускаю мой файл рубинового теперь я получаю сообщение об ошибке:
`font_style=': wrong enumeration type - expected Magick::StyleType, got String (TypeError)
Так после того, как ищется немного об этой теме я изменил мой config.yml первым
:font_style: !/ruby/constant ItalicStyle
, который получил меня такое же сообщение об ошибке, как описано выше, а затем я попытался это:
:font_style: !/ruby/symbol :ItalicStyle
и получил сообщение об ошибке:
`font_style=': wrong enumeration type - expected Magick::StyleType, got Symbol (TypeError)
п я проверил в IRB:
require 'rmagick' => true
Magick.const_get(ItalicStyle) => ItalicStyle=2
Magick.const_get(ItalicStyle).class => Magick::StyleType
Итак, наконец-то я получаю на мой вопрос: Как мне нужно изменить линии
:font_style: !/ruby/symbol :ItalicStyle
в моем файле config.yml так, что при загрузке в мой рубин Файл ItalicStyle будет распознан как константа Magick :: StyleType?
Или когда я уезжаю
:font_style: ItalicStyle
в config.yml и загрузите ItalicStyle в виде строки в мой файл рубина: есть возможность, чтобы преобразовать ItalicStyle из строки в Магик: StyleType константа в рубиновый файл напрямую?
Я был бы очень рад, если бы кто-то мог помочь. Я пытался в течение нескольких дней найти решение, и мне это действительно нужно для моего проекта.
Что случилось с ** сбросом ** значений по умолчанию в yaml для изучения того, как они должны выглядеть? Для правильного решения см. Ответ by @spickermann ниже. – mudasobwa