首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >支持定义中的多个通知

支持定义中的多个通知
EN

Stack Overflow用户
提问于 2015-06-09 14:24:11
回答 1查看 2.2K关注 0票数 1

这是以通用方式从变量中配置提供程序的后续问题

我将一些提供程序包装成定义,我想知道如何处理通知。我成功地编写了一个廉价的实现,在这里我可以传递一个数组,类似于这样:

代码语言:javascript
复制
provider_definition name do
    component $some_component
    notifies [[:redeploy, "docker_container[some_container]", :immediately],
              [:redeploy, "docker_container[some_other_cntr]", :delayed]]
end

在我的定义中,我有这样的想法:

代码语言:javascript
复制
params[:notifies].each do |notify_action, resource_name, notify_time|
    notifies notify_action, resource_name, notify_time
end

当然还有更好的方法吗?我希望我能在食谱中保留同样的格式:

代码语言:javascript
复制
provider_definition name do
    component $some_component
    notifies :redeploy, "docker_container[some_container]", :immediately
    notifies :redeploy, "docker_container[some_other_cntr]", :delayed
end

但是当我这样做的时候,只有最后一个通知才符合我的定义。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-10 07:34:19

坚持定义,我认为你已经有了更好的方法。

实现您希望的目标的一个选项是将您的定义转换为LWRP,这将创建一个自定义资源,它可以将notify属性作为任何其他主厨资源。

docker库/资源/my_ployy.rb

代码语言:javascript
复制
action :deploy
default_action :deploy

attribute :component, kind_of: Hash, required: true

docker_library/provider/my_ployy.rb

代码语言:javascript
复制
action :deploy do
  params = new_resource.component
  docker_image params['name'] do
    registry params['registry']
    tag params['tag']
    action :pull
  end
end

我可能是错误的类型为组件,我让你适应你的具体情况。写自内存,我可能忘了一些东西,有更多的文档这里关于LWRP。

和之前在食谱中一样,LWRP名称将从食谱名称和文件名中派生出来,因此在本例中:

代码语言:javascript
复制
my_component = $auth_docker
docker_library_my_deploy my_component.name do 
  component my_component
  notifies :redeploy, "docker_container[some_container]", :immediately
  notifies :redeploy, "docker_container[some_other_cntr]", :delayed
end
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30734873

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档