在YAML中进行多对一映射

时间:2011-07-15 13:59:16

标签: ruby rake yaml

我正在尝试在rake的YAML配置文件中引入多对一的映射。

也就是说,我有类似的东西:

- server: address

我希望有类似的东西:

- server: {1, 3, 5: address1; 2, 8, 12: address2}

当然,这不是正确的语法。

这是因为我根据给定的ID需要不同的地址。

CONFIG['server'][3] # this should return 'address1'
CONFIG['server'][5] # this should return 'address1' too
CONFIG['server'][12] # and this should return 'address2'

这在某种程度上是否可行?

提前谢谢

1 个答案:

答案 0 :(得分:1)

它应该以这种方式工作:

在config中创建一个名为server_config.yml的文件:

common: &common
  common_stuff_foo: foo
  common_stuff_bar: bar

server:
  1: 
    <<: *common
    adress: adress_for_server1

  2:
    <<: *common
    adress: adress_for_server2
  ... #some other servers

  12:
    <<: *common
    adress: adress_for_server12

将一个文件放入配置/初始化程序,如config_servers.rb,内容为

CONFIG = YAML.load_file("#{RAILS_ROOT}/config/server_config.yml")

您可以通过

获取您的地址
CONFIG['server'][1]['address'] in your application

它没有经过测试,但我认为它会起作用。我对yaml文件中的那些数字有点不确定