12

如果我有以下红宝石哈希:

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

我将如何访问上述哈希的部分内容?下面是一个关于我想要达到的目标的例子。

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

2 回答 2

8

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

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

或者,使用变量:

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

请注意,更多的 Ruby 方法是使用符号而不是字符串作为键:

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

current_environment = :testing
exec("rsync -ar root@#{environments[current_environment]}:/htdocs/")
于 2013-04-29T22:43:25.357 回答
4

您将使用括号:

environments = {
   'testing' =>  '11.22.33.44',
   'production' => '55.66.77.88'
}
myString = 'testing'
environments[myString] # => '11.22.33.44'
于 2013-04-29T22:38:43.727 回答