厨师食谱中使用了哪些 ruby​​ 功能?

2023-12-10

我刚开始使用 Chef,对 ruby​​ 不太了解。

我无法理解食谱中使用的语言语法。

比如说,我在食谱中的recipes/default.rb 中创建一个目录,如下所示:

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 语法的基础知识,包括

  • Grammar
  • 数据类型(与其他语言相比主要区别是符号)
  • Blocks

您不需要了解很多关于 Ruby 中的元编程的知识。

您发布的代码案例是基于 Ruby 的 DSL 的一个很好的示例。让我解释一下。

# 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

块是指定要在单个上下文(在本例中为该路径的上下文)中评估的一组操作(在本例中为创建、设置权限等)的便捷方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

厨师食谱中使用了哪些 ruby​​ 功能? 的相关文章

  • Rails 3.2.3 命名空间控制器被同名的全局控制器覆盖

    当全局应用程序控制器首先加载时 命名空间应用程序控制器在加载该命名空间内的页面时不会加载 应用程序控制器如下所示 class ApplicationController lt ActionController Base protect fr
  • 设计不能很好地处理 RoR3 应用程序上的多个子域

    我看到了很多关于这个主题的问题 但其中很多都有相互矛盾的信息 并且由于某种原因它对我不起作用 I have 顶级域名 即 lvh me 开发 每个用户都有子域 即 userdomain lvh me 登录表单位于顶级域 lvh me I w
  • SyntaxError:创建类实例时语法无效[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我在 Python shell 3 3 2 中运行这段代码 但它给了我SyntaxError invalid syntax cla
  • MacOS 每秒唤醒次数错误

    构建 Rails 应用程序 ruby 2 4 0p0 Rails 5 1 4 并使用我的 Macbook Air MacOS High Sierra 10 13 2 进行本地测试 我不断遇到此问题 过去 241 秒内有 45001 次唤醒
  • 如何运行使用 Rails 模型的 Ruby 任务?

    我有一个带有一些基本模型的 Rails 应用程序 该网站显示从其他来源检索到的数据 因此 我需要编写一个 Ruby 脚本来在数据库中创建新实例 我知道我可以使用测试挂钩来做到这一点 但我不确定这在这里是否有意义 我不确定这个任务应该是什么样
  • 输出到控制台,同时保留 ruby​​ 中的用户输入

    我有一个 ruby 脚本 它同时异步接收和显示来自服务器的消息 并允许用户在控制台上输入 当收到消息时 当前正在将其写入用户正在键入的内容的中间 输入本身并没有乱码 但看起来很糟糕 理想情况下 它将保存用户当前的输入 输出消息 然后在下一行
  • Rails Partial (Rails 3, HAML) 任意慢

    我使用的是 Rails 3 0 1 HAML 0 3 22 和 Mongrel 1 1 5 MongoMapper 不是 AR 我正在渲染一个列表 每个列表项都是它自己的部分 每次页面渲染其中一个列表项部分时 渲染时间都会延长近 100 倍
  • close 似乎不适用于 WebSocket

    我有这个简单的 JavaScript 代码 window ws new WebSocket ws 127 0 0 1 8000 ws onopen function ws send hello Ruby 中的服务器如下所示 require
  • ActiveRecord oracle_enhanced 适配器无法加载 ruby​​-oci8 库

    rails g scaffold失败 但 oci 脚本和 irb 数据查询有效 无法弄清楚出了什么问题 rails g scaffold table field1 integer field2 string invoke active re
  • 回形针如何更改基本名称(文件名)?

    我正在尝试更改照片的基本名称 文件名 在我的模型中我有 attr accessor image url basename has attached file image styles gt original gt 300x250 gt pn
  • 在新的 RHEL6 服务器上安装 ruby​​-filemagic gem 时遇到困难

    它似乎正在寻找 libmagic so 1 文件 我有那个文件 它位于 usr lib64 中 我没有以 root 用户身份运行此安装 我也在使用 rvm 和 Bundler 这是我的 bundle 命令的结果 当它到达 Gemfile 中
  • 将对象数组中的属性映射到另一个数组的更有效的 Ruby 方法?

    我不会在这里重复我的问题 但是有没有更有效的方法来写这个 def recruits names names for r in self referrals do names lt lt r display name end return n
  • (在 Ruby 中)允许混合类方法访问类常量

    我有一个为其定义常量的类 然后我定义了一个类方法来访问该类常量 这很好用 一个例子 usr bin env ruby class NonInstantiableClass Const hello world class lt lt self
  • 构造函数参数列表后面的try是什么意思?

    我在一个文件中看到了特殊的语法所以问题 https stackoverflow com questions 11574995 its so weird an exception were caught two times不久以前 class
  • 从类内部调用属性访问器方法[重复]

    这个问题在这里已经有答案了 我正在尝试调用我的类属性编写器之一 但由于某种原因它永远不会被调用 下面是一些代码 可以使这一点更清楚 class Test attr reader test def test val puts Called t
  • 什么是 - 获取的是一个目录 - 错误消息

    我收到这个奇怪的错误 Users gideon Documents ca ruby rubytactoe lib player rb 13 in gets Is a directory spec Errno EISDIR 玩家规格 rb r
  • 使用复选框过滤列表

    我有一个电影列表及其评级 在我的页面顶部 我有一个表单 其中提供了一个复选框列表 其中显示了每个可用的评级 G PG 13 等 一旦用户单击复选框并点击提交 我只想显示所选的电影 在我的索引方法中 我有一个名为的实例变量 filtered
  • 为什么 rand() 总是返回相同的数字?

    我在用 兰特 200 在我的 Rails 应用程序中 当我在控制台中运行它时 它总是返回随机数 但如果我在应用程序行中使用它 index rand 200 索引总是相同的号码 为什么会这样以及如何克服这个问题 简单的伪随机数生成器实际上生成
  • ||= 是什么意思? [复制]

    这个问题在这里已经有答案了 我的应用程序控制器中有一个受保护的方法 def current user current user User find by id session user id end 我想知道什么 方法 我一直在努力寻找和找
  • Ruby 的字符串并置功能的官方文档在哪里?

    我最近意识到 如果你并置一系列 Ruby 字符串文字 例如 a b c 它相当于这些字符串文字的串联 但是 我在任何地方都找不到这种语言功能的记录 我使用术语 并置 和 串联 进行搜索 但只在几个 StackOverflow 响应中找到了对

随机推荐

  • 将 Curl 转换为 Java 等效项

    我正在与New Relic REST API我第一次有一个curl命令 curl X GET https api newrelic com v2 applications appid metrics data json H X Api Ke
  • 什么定义了显式网格?

    MDN 定义了一个显式网格下列的 而显式网格由使用 grid template columns 或 grid template rows 定义的任何行和列组成 所以显式网格可以有single grid template columns gr
  • 如何在 Visual Studio 设计器中取消固定和移动表单?

    在 Visual Studio 中 表单粘在 IDE 工作区域的左上角 就像固定在那里一样 你如何取消它们 它们不是 固定 的 它们实际上是由设计师绘制在那个位置的 这只是模拟图 该表单实际上在设计器中的功能与在运行时的功能不同 您不能以任
  • 对于已经在进行中的 NSUrlConnection 应该如何处理 beginbackgroundtaskwithexpirationhandler: ?

    如果应用程序在前台时使用 NSURLConnection 开始下载 但随后应用程序在数据下载完成之前移动到后台 那么应用程序应该如何使用 beginbackgroundtaskwithexpirationhandler 对于这个已经存在的连
  • Python 中的“命名元组”是什么?

    什么是命名元组以及如何使用它们 我什么时候应该使用命名元组而不是普通元组 反之亦然 也有 名单 吗 即可变的命名元组 For the last question specifically see also Existence of muta
  • XCode:为什么我的活动没有添加到日历中?

    我已将以下代码添加到我的应用程序中 NSDate selected DatePicker date NSString date selected description NSDateComponents components NSCalen
  • Flash 使视图变为全屏

    我需要一个链接来调用 Flash 影片 使用 JavaScript 该影片将视图全屏显示并显示页面内容 就像用户按下了 F11 一样 有这样的flash电影吗 Edit这与 YouTube 和其他视频网站上的 Flash 播放器的不同之处在
  • 安装和导入后,colaboratory 将不会承认 arviz

    在Google的合作实验室中 安装了arviz然后导入arviz没有错误 但在代码单元中 pm plot posterior samples 得到错误 arviz未安装 尝试绘制贝叶斯代码 pm plot posterior samples
  • “模块是用不兼容的 Kotlin 版本编译的。其元数据的二进制版本是 1.5.1,预期版本是 1.1.16”

    当我尝试构建应用程序时出现以下错误 C Users Lenovo gradle caches transforms 2 files 2 1 32f0bb3e96b47cf79ece6482359b6ad2 jetified kotlin s
  • python networkx - 通过着色来标记边缘以进行图形绘制

    我正在使用 networkx 来研究图论实现 我想知道是否有一种方法可以标记给定图中的某些边 例如 假设我有一个图 G 并且我找到了从节点 x 到节点 y 的最短路径 我如何标记该路径 以便在绘制图时它将以不同的颜色绘制 标记边缘可以通过设
  • 关闭 BufferedReader 和 System.in

    Reader rdr new InputStreamReader System in BufferedReader br new BufferedReader rdr String s s br readLine br close Scan
  • 选择可变参数模板最后一个参数的有效方法

    我知道如何选择可变参数模板的第一个参数 template lt class Args gt struct select first template lt class A class Args gt struct select first
  • Python 中奇怪的前导字符 utf-8/utf-16 编码

    我写了一个简化版本来演示这个问题 我正在以 utf 8 和 UTF 16 格式对特殊字符进行编码 使用 utf 8 编码没有问题 当我使用 UTF 16 编码时 我得到一些奇怪的前导字符 我尝试删除所有尾随和前导字符 但错误仍然存 在 代码
  • jquery 每个循环内的 Ajax 调用

    这是一个我必须通过 ajax 调用写入 xml 文件的函数 第一次进行 ajax 调用时 代码可以正常工作 在第二个each 循环中 根本不进行ajax 调用 我不知道为什么 我将 asyn 指定为 false 但这没有帮助 无论如何 这似
  • Q-Learning 值太高

    我最近尝试在 Golang 中实现基本的 Q Learning 算法 请注意 我对强化学习和人工智能总体来说是新手 所以这个错误很可能是我的 以下是我如何在 m n k 游戏环境中实施解决方案 在每个给定的时间t 代理持有最后的状态动作 s
  • MVC 3 - 模型绑定表中的列表,每个记录是一列而不是行

    我可以找到有关如何在 MVC 3 中模型绑定项目列表的各种文章 甚至可以在表中进行模型绑定 但在每个示例中 行代表列表中的一条记录 我的观点的要求是每条记录必须是一列 我无法从以下文章中获得任何技巧 http blog stevensand
  • 根据列表中的条件合并列表项

    我有一个项目清单 例如 a IP 123 84 apple mercury IP 543 65 killer parser goat IP 549 54 pineapple django python 我想根据条件合并列表项 即合并所有项目
  • iOS:如何关闭弹出窗口[重复]

    这个问题在这里已经有答案了 可能的重复 如何关闭故事板弹出窗口 我有一个 iPad 故事板 将一个视图中的栏按钮项按住 Control 键拖动到另一个视图 并选择弹出框样式 当我按下按钮时 新的弹出窗口视图将显示在弹出窗口中 但我有两个问题
  • 使用 Java 中的 ImageIO 编写 TIFF 的平铺输出

    我拥有的是大量的帧 需要将它们放在一起形成更大的图像 如马赛克 所需的图像位置是已知的 图像数量非常多 因此将它们全部加载到内存中是不切实际的 根据这里的一些其他答案 我能够覆盖 RenderedImage 中的方法 特别是getData
  • 厨师食谱中使用了哪些 ruby​​ 功能?

    我刚开始使用 Chef 对 ruby 不太了解 我无法理解食谱中使用的语言语法 比如说 我在食谱中的recipes default rb 中创建一个目录 如下所示 directory home test mydir do owner tes