如何在运行时将动态变量添加到Ruby哈希中

时间:2016-08-27 21:56:33

标签: ruby

我想在运行时将字符串的值插入Ruby哈希。虽然我可以把它放在一个函数中来做到这一点,

def run_code(dynamic_variable)
   trigger_template = {
     :trigger => "#{dynamic_variable}"
   }
   .. #do something
end

为了便于阅读,我希望能够将模板存储在函数外部 - 或者从文件中读取它。我尝试通过ERB使用模板但是将结果作为字符串 - 而不是哈希。我想避免将dynaic_variable作为全局变量,因此将trigger_template存储为常量会抱怨缺少变量。

有没有办法将声明延迟到运行时?在运行时创建哈希的最佳方法是什么。 (哈希最终将转换为JSON)

1 个答案:

答案 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" }