- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
更新:
我正在尝试自学如何编写 Puppet 自定义类型。我看过这个文档:https://docs.puppet.com/puppet/4.10/custom_types.html和 https://docs.puppet.com/puppet/4.10/provider_development.html
这是我人为地尝试创建一个自定义类型,该类型简单地接受一个字符串数组并将它们写入文件“/tmp/track-titles.txt”。
这是我的类型代码(modules/hello_world/lib/puppet/type/track_titles.rb):
# blah blah blah
Puppet::Type.newtype(:track_titles) do
@doc = "Create track title file."
ensurable
newparam(:name) do
desc "Mandaorty paramteter name ."
end
newproperty(:tracks) do
desc "an arrary of strings"
end
end
这是我的提供商代码:(modules/hello_world/lib/puppet/provider/track_titles.rb)
Puppet::Type.type(:track_titles).provide(:foo) do
desc "contrived example."
def create
filename = @resource[:name]
tracks.each do |t|
system ( "echo #{t} >> #{filename}" )
end
end
def destroy
File.unlink(@resource[:name])
end
def exists?
File.exists?(@resource[:name]))
end
end
这是我的 puppet 模块,它使用了上面的内容:(modules/hello_world/manifests/init.pp)
class hello_world (
$msg = 'Hello World',
$track_titles = ['one','two','three'],
) {
# notify { $msg: }
track_titles { '/tmp/track-titles.txt':
tracks => $track_titles,
}
}
我这样执行这段代码:
$ puppet apply \
> --modulepath=/home/red/PUPPET/modules \
> --hiera_config=/home/red/PUPPET/hiera.yaml \
> -e 'include hello_world'
这是我得到的输出:
Notice: Compiled catalog for localhost in environment production in 0.06 seconds
Error: /Stage[main]/Hello_world/Track_titles[/tmp/track-titles.txt]: Could not evaluate: No ability to determine if track_titles exists
Notice: Finished catalog run in 0.82 seconds
我做错了什么。还有部分提供商代码我不喜欢:
Puppet::Type.type(:track_titles).provide(:ruby) do
这个 .provide(:ruby) 是什么意思?
请帮忙:)
最佳答案
好的。这是我做错了什么。一方面,我没有仔细阅读文档 ( https://docs.puppet.com/puppet/4.10/custom_types.html#properties-and-parameters)。它说:
提供程序文件应位于 lib/puppet/provider/<TYPE NAME>/<PROVIDER NAME>.rb
了解这一点有助于弄清楚 .provide(:thing)
是什么意味着。 :thing
和 <PROVIDER NAME>
是同一件事,需要匹配。所以这是我更新的工作代码:
这是 Puppet 类:
$ cat modules/hello_world/manifests/init.pp
class hello_world (
$track_titles = ['one','two','three'],
) {
track_titles { '/tmp/track-titles.txt':
tracks => $track_titles,
ensure => present,
}
}
这是类型定义:
$ cat modules/hello_world/lib/puppet/type/track_titles.rb
# blah blah blah
Puppet::Type.newtype(:track_titles) do
@doc = "Create track title file."
ensurable
newparam(:name) do
desc "Mandaorty paramteter name ."
end
newparam(:tracks) do
desc "an arrary of strings"
end
end
这是提供者代码。 这是我将文件放在错误目录中的代码,这就是我得到 Could not evaluate: No ability to determine if track_titles exists
的原因错误。
$ cat modules/hello_world/lib/puppet/provider/track_titles/track_titles.rb
Puppet::Type.type(:track_titles).provide(:track_titles) do
desc "Contrived example"
def create
filename = @resource[:name]
tracks = @resource[:tracks]
tracks.each do |t|
system ( "echo #{t} >> #{filename}" )
end
end
def destroy
File.unlink(@resource[:name])
end
def exists?
File.exists?(@resource[:name])
end
end
现在这是一个成功的执行:
$ puppet apply \
> --modulepath=/home/red/PUPPET/modules \
> --hiera_config=/home/red/PUPPET/hiera.yaml \
> -e 'include hello_world'
Notice: Compiled catalog for localhost in environment production in 0.07 seconds
Notice: /Stage[main]/Hello_world/Track_titles[/tmp/track-titles.txt]/ensure: created
Notice: Finished catalog run in 0.85 seconds
$ cat /tmp/track-titles.txt
one
two
three
关于ruby - 无法弄清楚如何编写自定义类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43693027/
我一直在试图理解人们一直在使用的这个网格系统。有时让我觉得自己很蠢。 我了解如果您使用无边距的 12 网格系统。第 12 列将是 100%,而第 1 列将约为 8.33333%。 我一直在看一些网格系
我们被分配了一个用于系统编程的 ASCII 压缩项目,但我在代码中的某一特定行上遇到了困难。 我问了question关于压缩,在处理完纸上示例文件的前十几个字母后,我将数组代码调整到了我的程序中。在
我正在使用 Appcelerator 框架编写应用程序,但偶尔会发生崩溃。我正在尝试找出导致崩溃的原因,因此我决定查看 iOS 模拟器崩溃报告。当然,这对我来说都是希腊语,但我希望得到一些指导,了解其
有人可以给我一些指导或指导我阅读有关 C++ set 对象的优秀教程吗? 我有一段这样的简单代码: #include using namespace std; int main() { ch
老实说,我不知道我的问题是否有解决方案,但我想在 Swift 中捕捉上下文切换发生的时间。 我正在想象一个需要很长时间才能完成的功能,例如远程服务器上的写操作,我在想是否有办法了解何时(至少在哪一行)
我正在使用 Yii2 并且一直在阅读 theming和 theme inheritance ;但是有一些问题: 考虑以下示例: 'view' => [ 'theme' => [
我尝试使用 AJAX 发布,因为我不想使用提交按钮并在每次单击它时重新加载页面。我正在使用此代码进行 ajax: Ajax loading error, please try again.").sho
我正在尝试找出将在 NodeJS 应用程序中使用的 MongoDB 模型的理想设计。该应用程序的设置类似于调查,某些步骤会根据之前的选择提供选项。这是选择和可能性的示例。 第 1 级:图案类型:纯色、
我有一个 API/Express 路由器: router.post("/signup", async function (req, res) { try { var user
我注意到 JFileChooser 隐藏了 Windows 系统文件。 hiberfil.sys、pagefile.sys、$Recycle.Bin 等文件、一些无法打开的快捷方式文件夹等... 我可
这是我第一次使用 Django,到目前为止,我对这个框架的工作方式印象深刻。我目前正在开发我的第一个应用程序,并正在处理数据库内容,但是,我在弄清楚如何在不运行原始查询的情况下进行内部联接时遇到问题。
我在自动调整蒙版大小方面遇到了一些问题。这是交易:我正在使用最近发布的 TwUI ,它从 UIKit 中获取了很多,但它在 Mac 上。这就是我为 iOS 和 Mac 标记的原因。因此,我创建了一个底
好吧,这是一个很长的,打起精神来! :) 最近我尝试在启动期间启动一个用 bash 编写的看门狗脚本。所以我在 rc.local 中添加了一行,其中包含以下内容: su someuser -c "/h
我在我的机器上安装了多个版本的 Windows 软件开发工具包,有趣的是,我的机器上已经安装了一个 Visual studio Installer工具的版本低于近一年前安装的版本: Windows S
widget('zii.widgets.CMenu', array( 'items'=>array( array('label'=>'Home', '
我是一名优秀的程序员,十分优秀!