使用变量作为键访问Ruby哈希

时间:2013-04-29 22:35:49

标签: ruby

如果我有以下ruby哈希:

environments = {
   'testing' =>  '11.22.33.44',
   'production' => '55.66.77.88'
}

我如何访问上述哈希的部分内容?下面举例说明我想要实现的目标。

current_environment = 'testing'
"rsync -ar root@#{environments[#{testing}]}:/htdocs/"

2 个答案:

答案 0 :(得分:6)

看起来你想要最后一行exec,因为它显然是一个shell命令而不是Ruby代码。你不需要插值两次;曾经做过:

exec("rsync -ar root@#{environments['testing']}:/htdocs/")

或者,使用变量:

exec("rsync -ar root@#{environments[current_environment]}:/htdocs/")

请注意,更多Ruby方式是使用Symbols而不是Strings作为键:

environments = {
   :testing =>  '11.22.33.44',
   :production => '55.66.77.88'
}

current_environment = :testing
exec("rsync -ar root@#{environments[current_environment]}:/htdocs/")

答案 1 :(得分:2)

您可以使用括号:

environments = {
   'testing' =>  '11.22.33.44',
   'production' => '55.66.77.88'
}
myString = 'testing'
environments[myString] # => '11.22.33.44'