厨师食谱中使用了哪些ruby功能?
我刚开始使用chef,对ruby不太了解 我在理解食谱中使用的语言语法方面有问题 比如说,我在recipes/default.rb中的一本食谱中创建了一个目录,如下所示:厨师食谱中使用了哪些ruby功能?,ruby,syntax,chef-infra,Ruby,Syntax,Chef Infra,我刚开始使用chef,对ruby不太了解 我在理解食谱中使用的语言语法方面有问题 比如说,我在recipes/default.rb中的一本食谱中创建了一个目录,如下所示: directory "/home/test/mydir" do owner "test" mode "0755" action :create recursive true end 我假设这是有效ruby脚本的一部分。像owner“test”这样的行是什么意思?这完全是一个函数调用、变量赋值还是其他什么?Ch
directory "/home/test/mydir" do
owner "test"
mode "0755"
action :create
recursive true
end
我假设这是有效ruby脚本的一部分。像
owner“test”
这样的行是什么意思?这完全是一个函数调用、变量赋值还是其他什么?Chef是用Ruby编写的,它广泛使用Ruby的功能来设计定制DSL。几乎每个chef配置文件都是用基于Ruby的DSL编写的
这意味着为了有效地使用chef,您应该熟悉Ruby的基本语法,包括
- 文法
- 数据类型(与其他语言相比的主要区别是符号)
- 块
# Call the method directory passing the path and a block
# containing some code to be evaluated
directory "/home/test/mydir" do
# chown the directory to the test user
owner "test"
# set the permissions to 0555
mode "0755"
# create the directory if it does not exists
action :create
# equivalent of -p flag in the mkdir
recursive true
end
块是指定一组操作(在本例中为创建、设置权限等)以在单个上下文(在本例中为该路径的上下文)中进行计算的一种方便方法。让我们将其分解
directory "/home/test/mydir" do
...
end
您只需调用Chef定义的名为目录的全局方法,传递一个参数“/home/test/mydir”
,以及一个块(介于do
和end
之间的所有内容)
这个区块可能在Chef创建的一个特殊范围内被排除,其中所有选项(所有者
,模式
,操作
,等等)都是方法。您正在阅读哪些文档?主要是互联网:目前我也在学习,以确认我的问题。:)这是一个函数调用。但这并不意味着它不是由方法\u missing
处理的。所有者
、模式
等都是方法吗?是的,都是Ruby方法。在所有者
的情况下,所有者
是方法,测试“
字符串
参数。我以前在这里回答过一个类似的问题:可能有一些更有价值的信息。