如何动态访问.yml值

时间:2018-02-09 21:05:24

标签: ruby-on-rails ruby yaml

我在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文件中的实际值

1 个答案:

答案 0 :(得分:0)

首先,我们创建 load_custom.rb 以访问自定义 .yml 文件:

<强>配置/初始化/ load_config.rb

CONFIG_PATH="#{Rails.root}/config/rv.yml"
RV_CONFIG = YAML.load_file(CONFIG_PATH)

然后我们在config文件夹中创建 rv.yml 文件,如下所示:

<强> ./配置/ 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'
RV_CONFIG[server_name]

结果:

  

{&#34; abc&#34; =&gt; [&#34; ABC&#34;,1],&#34; def&#34; =&gt; [&#34; DEF&#34;,2 ],&#34; ghi&#34; =&gt; [&#34; GHI&#34;,3],   &#34; jkl&#34; =&gt; [&#34; JKL&#34;,4]}

RV_CONFIG[server_name]['abc']

结果:

  

[&#34; ABC&#34;,1]