【发布时间】:2018-02-09 21:05:23
【问题描述】:
我在 rv.yml 文件中有以下内容:
:server1:
:abc: ['ABC',1]
:def: ['DEF',2]
:ghi: ['GHI',3]
:jkl: ['JKL',4]
:server2:
:abc: ['ABC',4]
:def: ['DEF',2]
:ghi: ['GHI',1]
:jkl: ['JKL',3]
我在运行时将服务器值和数组的剩余部分存储在一个变量中。例如:server_name = server1(动态)和 prop_values = abc[1]。如果我想访问 server1 的 abc[1] 它应该返回 1,所以我可以使用 Test::data.env.server1.abc[1] 但我想动态传递值('server1' 和 abc[1] )。我该怎么做呢?使用以下内容并不能满足我的要求:
Test::data.env[server_name][prop_values]
我希望它使用 ruby 解析并获取 .yml 文件中的实际值
【问题讨论】:
-
我不知道
Test::data.env.server1.abc[1]会如何回复你4。 -
> 如果我想访问 server1 的 abc[1] 它应该返回 4 你的意思是
abc[1]的server2吗?究竟是什么问题?您是否已经通过YAML.load加载数据? -
Test::data.env (忽略这部分) - 所以这会解析为访问 rv.yml 文件,当我基于 server1 作为键遍历内部时,我想获取第二个索引处的值数组。
-
是的,我正在加载 yml,但我不想硬编码 server1 或 server 2,它将在运行时决定。来自 server1 的 abc[1] 应该返回 1
-
“关注并没有给我想要的” - 那么它给了你什么?
prop_values是什么?Test::data.env是什么类型?它从#[]方法返回了什么? 那个是如何处理#[]的?一些研究提示。
标签: ruby-on-rails ruby yaml