- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我想检查节点属性的值。此 case
声明是我到目前为止所拥有的,并且它有效:
case node[:languages][:ruby][:host_cpu]
when "x86_64"
...
when "i686"
...
end
if
代替声明。这是我尝试过的:
if node[:languages][:ruby][:host_cpu]?("X86_64")
...
end
if platform?("ubuntu")
...
end
if
上给出了一个语法错误行说有意外
\n
和
$end
预料之中。
if
有两种方式.第一个是我在上面演示的那个,它(显然)只适用于资源,以及
if_only
,它适用于节点。像这样
if_only {node[:languages]}
if
检查节点的值陈述?一种方法确实检查值,但只检查资源,另一种方法检查节点,但只检查它们的存在,而不是它们的值。
最佳答案
您正在混合多种不同的条件变体,其中大部分是 Chef 的一部分,而不是 Ruby。让我试着一一描述不同的选项。
通常,一个 case
大致相当于一系列if
和 elsif
声明。您的 case
以上
case node[:languages][:ruby][:host_cpu]
when "x86_64"
...
when "i686"
...
end
if node[:languages][:ruby][:host_cpu] == "x86_64"
...
elsif node[:languages][:ruby][:host_cpu] == "i686"
...
end
case
实际使用
===
运算符通常不是可交换的,但功能更强大。对于简单的比较,它的作用与
==
相同尽管。这两种变体都是 Ruby 语言的一部分,您可以在其中编写 Recipe 。
platform?
method 是 Chef 定义的一种方法,用于检查当前平台是否是传递的值之一。您可以阅读更多相关信息(以及类似的方法,例如现在在 Chef 文档中推荐的
platform_family?
方法
recipes in general 和一些
often used ruby idioms 。
?
的事实感到惊讶。和
!
字符出现在方法名称的末尾,这使得 Ruby 在这方面的同类语言中相当独特。这些字符只是方法名称的一部分,对语言没有特殊意义。它们仅用于程序员的约定,以更好地识别方法的目的。如果一个方法有
?
最后,它用于检查某些条件,并期望返回真值或假值。带有
!
的方法最后经常执行一些有潜在危险的操作,例如更改对象到位,删除内容,......同样,这只是一个约定,不被语言解释。
only_if
并通过扩展
not_if
用于在 Chef 资源上定义条件,以确保它们仅在特定条件为真时(或使用
not_if
时,如果为假)才执行。由于这些属性仅用于 Chef 资源,因此它们自然也由 Chef 定义。
case
中的代码语句将被运行。在加载了所有配方并定义了所有资源后,Chef 进入第二阶段,即收敛阶段。在那里,运行执行更改(创建文件和目录、安装包等)的资源的实际实现。只有在这个阶段,
only_if
和
not_if
检查条件。
file "/tmp/helloworld"
action :create
content "hello world"
end
if File.exist?("/tmp/helloworld")
file "/tmp/foobar"
action :create
content "foobar"
end
end
file "/tmp/helloworld"
action :create
content "hello world"
end
file "/tmp/foobar"
action :create
content "foobar"
only_if{ File.exist?("/tmp/helloworld") }
end
/tmp/foobar
在资源编译期间检查是否存在。这时候,真正创建
/tmp/helloworld
的代码文件尚未运行,因为它只在转换步骤中运行。因此,在您第一次运行时,
/tmp/foobar
不会创建文件。
only_if
完成的。在转换期间进行评估。在这里,您会注意到这两个文件都是在第一次运行时创建的。
关于ruby - 如何将此 case 语句更改为 if 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14170184/
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界. 这篇CFSDN的博客文章详解dedecms后台编辑器将回车 改为 的方法由作者收集整理,如果你对
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 6 年前。 Improve th
不是将代码放在正文的头部或末尾(我把它放在正文的末尾),如果我将代码放在 JS 文件中而不是在 html 中它自己的脚本标记,是否可以? (我假设它像任何其他代码一样工作正常,但我问以防万一) 最佳答
我尝试执行从\e 命令编写的查询,但现在我无法执行任何查询,但可以在 PSQL 中执行命令。 现在我注意到这一点,我输入的命令现在在\e 中。 当我关闭\e(尝试运行它)时问题开始了。 最佳答案 ps
我有一个这样的字符串($ 字符总是被其他字符包围): a$b c$d e$f 我希望我的字符串方法在 $ 前面放置一个 \ 并删除换行符: a\$bc\$de\$f 我试过了,但它没有放入 \ 字符:
我需要使用 Java 构建一个 XML 文件。问题是我必须使用一些特殊字符,例如“ć”,然后在我的移动应用程序中读取它。 如果我手动更改 ć 就可以正常工作至 ć在我的 XML 文件中的记事
我有一个removeUser 页面,我在其中使用,然后使用submitForm() 函数进行错误处理。这段代码运行得非常好: export default function RemoveUserPag
我在数据库 “2048-05-21” 中有一个看起来像这样的日期 我只想得到年份,在这一年我只想得到两个后面的数字并将两个前面的数字更改为19 example: data : 2048-05-21 1
public class Venus1 { public static void main(String args[]) { int[]x={1,2,3};
我有以下 PHP 脚本,现在我需要在 JavaScript 中做同样的事情。 JavaScript 中是否有类似于 PHP 函数的函数,我已经搜索了好几天但找不到类似的东西?我想做的是计算某个单词在数
这个问题在这里已经有了答案: Is it bad practice to specify an array size using a variable instead of `#define` in
我陷入了一种情况,我必须通过“选中”工具栏中的复选框来“选中”列表中存在的所有复选框。 这是创建复选框列表的代码:- itemTpl: 'checked="checked" /> {groupName
我正在使用Python3。在分析一些网站时,我遇到了一些奇怪的字符并寻找解决方案。我找到了一个,但在找到解决方案之前,我尝试了一些方法,并且知道我无法重置它。当我使用 Jupyter 笔记本将列表 l
我在 http 下有 unity android app 和 site api 的工作基础设施。 最近换了服务器,申请了ssl证书。现在我的 api 在 https 下。 在 unity 应用程序中,
我在 http 下有 unity android app 和 site api 的工作基础设施。 最近换了服务器,申请了ssl证书。现在我的 api 在 https 下。 在 unity 应用程序中,
我在 Objective-C 中有一些代码。我想,我收到了 NSString 类型,但是当我尝试将它保存在核心数据中时,我得到了一个 user.clientID = clientID; 错误,例如:
在表中我有一个名为 CallTime 的字段 (Varchar)。 包括晚上8:00、晚上8:40、上午10:00等时间 我想将字段类型更改为“时间”并更新时间格式。该怎么做? 谢谢 最佳答案 UPD
这个问题在这里已经有了答案: C# - for Loop Freezes at strange intervals (3 个答案) 关闭 6 年前。 我试图解决 problem #14 from P
我今天在 Pycharm 社区版 5.0.3 中收到了这个错误,想知道这是否只是我做错了/没有意识到,或者是 PyCharm lint 问题。重现错误的代码是 mylist = list() # fi
我的目标是将数据库中的随机文本显示到网页上。首先,我不知道为什么我的数据没有保存,为什么我得到的是[Entity of type sec.helloweb.HelloMessage with id:
我是一名优秀的程序员,十分优秀!