如何在ruby_block中使用来自另一个厨师食谱的厨师助手库

如何在ruby_block中使用来自另一个厨师食谱的厨师助手库,第1张

概述AWS Opsworks:Chef版本11.10,Berkshelf版本3.2.0. 我无法弄清楚如何在cookbook B的ruby_block中使用cookbook A中的辅助库. 我发现post讨论了如何在ruby_block中包含一个方法,another讨论了如何在cookbook中共享库,但我不能同时使用它们. cookbookA /库/ helpers.rb module librar AWS Opsworks:Chef版本11.10,berkshelf版本3.2.0.

我无法弄清楚如何在cookbook B的ruby_block中使用cookbook A中的辅助库.

我发现post讨论了如何在ruby_block中包含一个方法,another讨论了如何在cookbook中共享库,但我不能同时使用它们.

cookbookA /库/ helpers.rb

module libraryA    module Helpers        def log(output)            Chef::Log.info("#{cookbook_name}:#{recipe_name}: #output}")        end    endend

cookbookB / Metadata.rb

depends 'cookbookA'

以下setup.rb有效.

cookbookB /食谱/的setup.rb

::Chef::Recipe.send(:include,libraryA::Helpers) log("this is a log")

但是,当我在ruby块中使用log函数时,它会失败.以下setup.rb不起作用:

cookbookB /食谱/的setup.rb

::Chef::Recipe.send(:include,libraryA::Helpers) ruby_block "logging-function" do      block do           log("this is a log")      end end

P.S.:我也尝试使用:: Chef :: Resource.send(:include,
libraryA的::佣工)

更新的代码块:

::Chef::Recipe.send(:include,libraryA::Helpers) ruby_block "logging-test" do     block do         ::Chef::Recipe.send(:include,libraryA::Helpers)            ::libraryA::Helpers.ttlog("message")     end end

收到错误:NoMethodError – libraryA :: Helpers:Module的未定义方法ttlog

更新了帮助者

cookbookA /库/ helpers.rb

def log(output)    Chef::Log.info("#{cookbook_name}:#{recipe_name}: #output}")end

P.S:删除了模块结构

解决方法 我认为ruby_block在其他上下文中运行,在其他对象下运行.
您可以尝试将该库包含在提供程序中,但我不能保证它会起作用.

:: Chef :: ProvIDer :: RubyBlock.send(:include,libraryA :: Helpers)

PS.资源确实有参数的定义和列表,但代码是从ProvIDer执行的.

总结

以上是内存溢出为你收集整理的如何在ruby_block中使用来自另一个厨师食谱的厨师助手库全部内容,希望文章能够帮你解决如何在ruby_block中使用来自另一个厨师食谱的厨师助手库所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1270557.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存