我正在概述CsvVerify模块的工作原理。有没有办法不对包含具有实例变量
的模块的类进行轮询创意受到virtus的启发,并且是这样的:
employee_csv_importer.rb(使用模块)
class EmployeeCsvImporter
include CsvVerify
headers 'ID', 'First Name', 'Last Name', 'Title or Department',
'Age', 'Native Language', 'Fluent in English?'
end
csv_verify.rb
module CsvVerify
puts "included"
def headers(*names)
@config = Config.new
end
end
config.rb
module CsvVerify
class Config
end
end
那么如何重新组织它以避免使用@config污染EmployeeCsvImporter?
PS。 为什么现在这不起作用呢? 为什么我从运行employee_csv_importer.rb获得此输出?
included
/data/gems/csv_verify/examples/1_employees.rb:6:in `<class:EmployeeCsvImporter>':
undefined method `headers' for EmployeeCsvImporter:Class (NoMethodError)
答案 0 :(得分:1)
我建议您首先在没有module
和include
的情况下开始编写您的功能。这有助于塑造结构,特别是如果您不熟悉Ruby。
通过包含CsvVerify
添加的方法作为实例方法添加,而不是类方法。因此,您有NoMethodError
。