试着看看如何最好地从字符串中的文本动态调用一些ruby代码。
以下内容使用chef创建一个目录:
directory /tmp/test do
mode "755"
owner me
group me
action :create
end
如果文字"目录"包含在变量中,我想使用它来调用相同的代码而不使用expicit if语句。我不太了解红宝石/厨师这么做。
目前的做法:
if action == "directory"
directory /tmp/test do
...
end
end
理想的方法(产生效果):
"#{action}" /tmp/test do
...
end
答案 0 :(得分:3)
directory
是方法调用。您可以使用send
在Ruby中动态调用方法。在这种情况下,它看起来像:
send(action, '/tmp/test') do
...
end
虽然大多数情况下都不建议这样做,但它会很快导致代码非常难以理解,而且我不确定在那里...
实际可以互换的情况。请记住,您的代码应该是首先可读的,并且如果它们不经常发生变化,重复的事情就可以了。