如何在Chef中存储一个Ruby类,以便多个食谱可以使用它?

我在Ruby中编写了一个类来存储PAM规则。 我知道这是相当原始的,但我也是Ruby的新手。 我已经testing过这个class级,现在我做了所有我想要的。 我想要做的就是将课堂放在厨师食谱中,以便多个食谱可以使用它来build立这些对象的列表。 (我也是厨师新手)

class PamRule def initialize( line ) pieces = line.partition( /\S+[.]so/ ) @name = pieces[1] @args = pieces[2].strip typeControl = pieces[0].squeeze( ' ' ).strip.split( ' ' ) @type = typeControl[0] @control = typeControl[1..-1].join( ' ' ) end def getType @type end def getControl @control end def getName @name end def getArgs @args end def to_s @type.ljust(11) + ' ' + @control.ljust(13) + ' ' + @name + ' ' + @args end def setArgs( args ) @args = args end def self.readFile( file ) rules = Array.new() File.open(file).each do |line| if line[0,4] == 'auth' || line[0,4] == 'acco' || line[0,4] == 'pass' || line[0,4] == 'sess' rules << PamRule.new( line ) end end rules end end 

我一直在寻找厨师图书馆的文档,但他们有时会感到困惑,似乎只是谈论创build模块或创build食谱类。 我试图找出如果我已经有一个类创build,只是想能够在多个食谱中使用它。 我需要能够使用类作为数据types,因为我想创buildPamRule对象的列表。 下面是我尝试在配方中用作testing的一个例子:

 ruby_block "remove sha512" do block do file_names = ['/etc/pam.d/password-auth', '/etc/pam.d/system-auth'] file_names.each do |file_name| rules = PamRule.readFile( file_name ) rules.each do |r| if r.getType == "password" && r.getName == "pam_unix.so" puts "remove sha512" end end end end end 

我试图简单地将类放在库目录中,但运行时,我得到wrong argument type Class (expected Module) 。 在这一点上,我并不完全确定要去哪里。 请帮忙。