有人可以帮我这个吗?
NoMethodError
-------------
undefined method `execute' for Chat::Mattermost:Class
相关文件内容:(文件名libraries/chat.rb
)
4:
5: module Chat
6: class Mattermost
7:
8: def self.log_to_chat(message)
9>> execute "echo" do
10: command "echo #{message}"
11: end
12: end
13:
14: end
15: end
16:
我读到DSL语法在定义中不可用,所以我猜我需要做一些类似于r = Chef::Resource::Execute.new("echo #{message}")
和r.run_command :run
的事情但是我不太确定这样做。
其他相关代码,我的方法是"叫做#34;像这样:
log "this is a message" do
level :info
notifies :run, Chat::Mattermost.log_to_chat("#{name}"), :immediately
end
编辑:第二次尝试
NoMethodError
-------------
undefined method `events' for nil:NilClass
代码:
5: require 'chef/resource/execute'
6:
7: module Chat
8: class Mattermost
9:
10: def self.log_to_chat(message)
11: cmd = Chef::Resource::Execute.new("echo #{message}")
12>> cmd.run_action(:run)
13:
答案 0 :(得分:1)
notifies :run, Chat::Mattermost.log_to_chat("#{name}"), :immediately
notifies
,您应该传递字符串,该字符串将用于在厨师上下文中搜索资源。如果您想增强日志资源提供程序,您应该实现自己的,this,将其放在libraries
中并使用新实现的类名作为提供程序调用{{1}}资源
log