如何在Ruby中显式引用核心类?

时间:2016-09-21 13:31:29

标签: ruby chef

我和Chef一起工作,我遇到了需要使用Ruby File.dirname()类方法的情况。问题是,Chef拥有自己的Chef::Resource::File类,在ruby_block资源中执行代码时会解析它。当存在命名冲突时,如何显式引用核心命名空间File类?

2 个答案:

答案 0 :(得分:6)

使用::添加班级名称,即::File

答案 1 :(得分:1)

请注意,Chef本身不会使任何内容超载。问题是您在::Chef::Resource::RubyBlock,并且您正试图在"文件"上进行符号查找。 Ruby语言向上搜索并在找到::Chef::Resource::File之前找到::File。正确的解决方案是使用::File.dirname,这只是Ruby的一个功能(不能轻易改变,不会有很多破损)。