如何在 YAML 文件中声明 ruby 常量 (RMagick)
How to declare a ruby constant (RMagick) in a YAML file
我正在寻找在 .yml 文件中声明 Magick::StyleType 常量然后将此常量加载到 ruby 文件中的可能性。
或者,如果那不可能,那么我需要知道如何将字符串转换为 ruby.
中的 Magick::StyleType 常量
详情如下:
我正在尝试编写一个 ruby 程序,该程序在图片上放置一些文本,我为此使用了 RMagick 界面。
在我的 ruby 程序中,我有一个方法可以指定文本的不同属性,如字体系列或字体样式。此方法包括以下行:
self.font_style = ItalicStyle
现在我想将所有可更改的参数存储在 YAML 配置文件 (config.yml) 中,因此此 config.yml 包括以下行:
#font style (like bold, italic and so on)
:font_style: ItalicStyle
现在我将 config.yml 加载到我的 ruby 文件中,我方法中的上述行现在读取
self.font_style = config_file[:font_style]
当我 运行 我的 ruby 文件现在我收到错误消息:
`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 文件中以便在加载到我的 ruby 文件中时 ItalicStyle 将被识别为 Magick::StyleType 常量?
或者我离开的时候
:font_style: ItalicStyle
在 config.yml 中并将 ItalicStyle 作为字符串加载到我的 ruby 文件中:是否有可能将 ItalicStyle 从字符串转换为 Magick:StyleType 常量 ruby直接归档?
如果有人能提供帮助,我将非常高兴。我已经尝试了好几天来寻找解决方案,我的项目确实需要它。
我会在 YAML
文件中存储一个 String
,因为这样更容易编写和阅读:
:font_style: ItalicStyle
然后我会通过名称获取常量来配置 Magick
:
self.font_style = Object.const_get(config_file[:font_style])
我正在寻找在 .yml 文件中声明 Magick::StyleType 常量然后将此常量加载到 ruby 文件中的可能性。 或者,如果那不可能,那么我需要知道如何将字符串转换为 ruby.
中的 Magick::StyleType 常量详情如下:
我正在尝试编写一个 ruby 程序,该程序在图片上放置一些文本,我为此使用了 RMagick 界面。 在我的 ruby 程序中,我有一个方法可以指定文本的不同属性,如字体系列或字体样式。此方法包括以下行:
self.font_style = ItalicStyle
现在我想将所有可更改的参数存储在 YAML 配置文件 (config.yml) 中,因此此 config.yml 包括以下行:
#font style (like bold, italic and so on)
:font_style: ItalicStyle
现在我将 config.yml 加载到我的 ruby 文件中,我方法中的上述行现在读取
self.font_style = config_file[:font_style]
当我 运行 我的 ruby 文件现在我收到错误消息:
`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 文件中以便在加载到我的 ruby 文件中时 ItalicStyle 将被识别为 Magick::StyleType 常量?
或者我离开的时候
:font_style: ItalicStyle
在 config.yml 中并将 ItalicStyle 作为字符串加载到我的 ruby 文件中:是否有可能将 ItalicStyle 从字符串转换为 Magick:StyleType 常量 ruby直接归档?
如果有人能提供帮助,我将非常高兴。我已经尝试了好几天来寻找解决方案,我的项目确实需要它。
我会在 YAML
文件中存储一个 String
,因为这样更容易编写和阅读:
:font_style: ItalicStyle
然后我会通过名称获取常量来配置 Magick
:
self.font_style = Object.const_get(config_file[:font_style])