如果我有以下ruby哈希:
environments = {
'testing' => '11.22.33.44',
'production' => '55.66.77.88'
}
我如何访问上述哈希的部分内容?下面举例说明我想要实现的目标。
current_environment = 'testing'
"rsync -ar root@#{environments[#{testing}]}:/htdocs/"
答案 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'