我和Chef一起工作,我遇到了需要使用Ruby File.dirname()
类方法的情况。问题是,Chef拥有自己的Chef::Resource::File
类,在ruby_block
资源中执行代码时会解析它。当存在命名冲突时,如何显式引用核心命名空间File类?
答案 0 :(得分:6)
使用::
添加班级名称,即::File
。
答案 1 :(得分:1)
请注意,Chef本身不会使任何内容超载。问题是您在::Chef::Resource::RubyBlock
,并且您正试图在"文件"上进行符号查找。 Ruby语言向上搜索并在找到::Chef::Resource::File
之前找到::File
。正确的解决方案是使用::File.dirname
,这只是Ruby的一个功能(不能轻易改变,不会有很多破损)。