在普通Ruby项目中存储字符串的位置[已关闭]

2w2cym1i  于 2023-06-05  发布在  Ruby
关注(0)|答案(1)|浏览(155)

已关闭,此问题需要更focused。目前不接受答复。
**想改善这个问题吗?**更新问题,使其仅通过editing this post关注一个问题。

10小时前关闭。
Improve this question
我用Rails写代码已经两年了。我注意到我在纯Ruby中有一些差距,并决定用普通Ruby构建一个副项目。我的项目基本上是一个不和谐的机器人,我想知道什么是最好的方式来存储一些数据。
我的机器人使用一种方法来提问并等待用户的输入,所有问题数据都存储在具有以下结构的对象中:

QUESTIONS = {
  title1: {
    content: 'string',
    validator: /regex/,
    invalid_input_message: 'string'
  },
  title2: {
    content: 'string',
    validator: /regex/,
    invalid_input_message: 'string'
  },
  # ...
}

因为我将实现很多问题,所以我不想将这个对象存储在我的类文件中。受i18n的启发,我的第一个想法是使用yaml文件,但我也有正则表达式,而不仅仅是字符串。此外,由于我必须将YAML加载到Ruby对象中,我想知道是否可以将对象存储在Ruby文件中并将其导入到Bot类中。
是将对象存储在ruby文件中还是应该使用YAML?如何处理这个正则表达式,如果我去YAML?
谢谢你的时间:)

lo8azlld

lo8azlld1#

当你需要告诉解析器允许解析Regexp时,YAML也允许存储regexp。

require 'yaml'

yaml = <<~YAML
  string: Hallo World
  regexp: !ruby/regexp /^regexp/
YAML

hash = YAML.load(yaml, permitted_classes: [Regexp])

hash['string']
#=> "Hallo World"

hash['regexp']
#=> /^regexp/
hash['regexp'].class
#=> Regexp

相关问题