You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

纯Ruby项目中Discord机器人QUESTIONS数据存储方式咨询

选Ruby文件还是YAML存储带正则的问题配置?

方案一:单独的Ruby文件存储

这应该是对你来说最省心的方案,完全适配你的场景:

  • 优势:原生支持Ruby所有语法,正则直接写/regex/即可,不需要额外处理。读取时只需require或load文件,就能直接使用QUESTIONS常量,和你平时写Ruby哈希完全一致,零学习成本。后续添加问题时,直接扩展哈希就行,还能灵活加注释、甚至写简单的动态逻辑(比如根据条件生成问题)。
  • 实现示例:
    新建config/questions.rb:
    QUESTIONS = {
      email: {
        content: '请输入你的邮箱',
        validator: /\A[\w+\-.]+@[a-z\d\-]+(\.[a-z\d\-]+)*\.[a-z]+\z/i,
        invalid_input_message: '邮箱格式不正确,请重新输入'
      },
      phone: {
        content: '请输入你的手机号',
        validator: /\A1[3-9]\d{9}\z/,
        invalid_input_message: '手机号格式不正确,请重新输入'
      }
    }
    
    在Bot类中引入:
    require_relative 'config/questions'
    # 直接使用 QUESTIONS[:email][:validator] 即可
    

方案二:YAML存储+正则解析

YAML本身不支持原生正则,需要手动把字符串转成Ruby的Regexp对象,适合偏好简洁配置格式的场景:

  • 优势:纯键值对结构更直观,通用性强,若后续需要和其他语言共享配置会更方便。
  • 注意点:YAML中需要转义正则的特殊字符(比如反斜杠要写成\\),且要额外写解析逻辑转换正则字符串。
  • 实现示例:
    新建config/questions.yml:
    email:
      content: '请输入你的邮箱'
      validator: '\A[\w+\-.]+@[a-z\d\-]+(\.[a-z\d\-]+)*\.[a-z]+\z/i'
      invalid_input_message: '邮箱格式不正确,请重新输入'
    phone:
      content: '请输入你的手机号'
      validator: '\A1[3-9]\d{9}\z'
      invalid_input_message: '手机号格式不正确,请重新输入'
    
    Ruby中读取并解析:
    require 'yaml'
    
    raw_config = YAML.load_file('config/questions.yml')
    QUESTIONS = raw_config.transform_values do |item|
      # 拆分正则主体和修饰符
      regex_content, modifiers = item['validator'].split('/').values_at(1, 2)
      # 转换为Regexp对象,处理修饰符
      item['validator'] = if modifiers
                            Regexp.new(regex_content, Regexp.const_get(modifiers.upcase))
                          else
                            Regexp.new(regex_content)
                          end
      # 可选:把字符串键转为符号键
      item.symbolize_keys
    end
    

最终建议

作为个人副业项目,优先选单独的Ruby文件:

  • 不需要额外的解析逻辑,减少出错概率;
  • 你本身熟悉Ruby语法,写起来效率更高;
  • 后期扩展灵活,能轻松添加动态逻辑。

只有当你特别偏好YAML的简洁格式,或有跨语言共享配置的潜在需求时,再考虑YAML方案。

内容的提问来源于stack exchange,提问作者Sonfaya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 13:02:34