有没有像 Clojure 的 Schema 这样的 Ruby 库来验证数据结构?

Is there Ruby library like Clojure's Schema for validating data structures?

我非常喜欢 Prismatic's Schema 验证数据结构。然而,我发现自己现在在 Ruby 工作,我正在尝试从 YAML 或 JSON 生成一堆模型,以便在我们的 Rails 应用程序中进行测试。我需要确保来自 YAML/JSON 的数据在语义上是正确的,例如哈希图中的某些值必须是布尔值、字符串或字符串数​​组等。

我正在处理的数据示例(采用 Ruby 表示法):

@@data = [
  {name: "United States",
   states: ["New York", "New Jersey", "Texas"],
   default_tax: false},
  {name: "US Remote",
   states: ["Alaska", "Hawaii"],
   default_tax: true}
]

最好的 Ruby 方式是什么?有人可以推荐一个类似于 Schema 的库吗?

经过一些研究,hash_validator 似乎是最好的。

用法很简单。将 github 存储库中的示例改编为我上面的数据:

# Validations hash
validations = 
  name:        'string',
  states:      'array',
  default_tax: 'boolean'
}

validator = HashValidator.validate(@@data[1], validations)

validator.valid?
  # => true