我想在运行时将字符串的值插入Ruby哈希。虽然我可以把它放在一个函数中来做到这一点,
def run_code(dynamic_variable)
trigger_template = {
:trigger => "#{dynamic_variable}"
}
.. #do something
end
为了便于阅读,我希望能够将模板存储在函数外部 - 或者从文件中读取它。我尝试通过ERB使用模板但是将结果作为字符串 - 而不是哈希。我想避免将dynaic_variable
作为全局变量,因此将trigger_template
存储为常量会抱怨缺少变量。
有没有办法将声明延迟到运行时?在运行时创建哈希的最佳方法是什么。 (哈希最终将转换为JSON)
答案 0 :(得分:2)
我将举例说明如何从文件加载哈希值,然后在运行时修改它。您可以使用JSON或YAML来序列化哈希。例如,这是一个YAML文件:
---
foo: "bar"
bar: "foo"
然后我说
require 'yaml'
hash = YAML.load("./my/file.yaml")
hash["bar"] = "my new bar val"
puts hash # print values
# => { "foo" => "bar", "bar" => "my new bar val" }