21、深入探索Chef库与资源:自定义命名空间、扩展核心类及资源提供者

深入探索Chef库与资源:自定义命名空间、扩展核心类及资源提供者

1. 自定义命名空间中的方法

在某些简单场景中,我们可以通过库将模块中的方法混入到配方代码中。但这种方式存在一个问题,即方法会像在类中定义的一样对类可用,有时很难明确特定方法与具体功能集的关联。

1.1 创建自定义命名空间

下面我们将使用Ruby的面向对象特性,在Chef现有类下定义新的命名空间,为库方法提供更清晰的结构。以之前创建的 stop_file_exists? 方法为例,这次我们要将其置于更具信息性的命名空间下。

操作步骤如下:
1. 创建一个新的库文件 /tmp/part3_examples/cookbooks/testcookbook/libraries/stop_file.rb ,并粘贴以下代码:

class Chef::Recipe::StopFile 
  def self.stop_file_exists? 
       ::File.exists?("/tmp/stop_chef")
  end
end

这里我们在 Chef::Recipe 类下创建了一个新的命名空间 Chef::Recipe::StopFile ,并使用 self 关键字指定 stop_file_exists? 为类方法,这样就可以直接调用 Chef::Recipe::StopFil

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值