我无法弄清楚如何在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中使用来自另一个厨师食谱的厨师助手库所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)