如何在ruby_block中使用来自另一个厨师食谱的厨师助手库
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 end end 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, 更新的代码块: ::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执行的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 数据结构与算法(八):排序
- sqlite关于The database disk image is malformed问题的解决
- c – 为什么STL设置比较器仅通过模板指定?
- ruby-on-rails – 用factory_girl写工厂时,从数组中随机选择
- macos – LibPNG Boost :: GIL:找不到png_infopp_NULL
- c# – 如果我在属性中有验证属性,为什么Validator.TryValid
- postgresql – 如何使用GeoTools从hstore列过滤数据?
- 如何在Xcode 4.2中使用iOS SDK 5.0制作基于导航的应用程序?
- iphone – 设置AVCaptureTorchModeOn
- flex操作XML,强力总结帖