如何在Rails下的自定义ruby脚本中扩展自定义模块

时间:2015-03-27 05:29:56

标签: ruby-on-rails ruby-on-rails-4

我有一个ruby脚本lib/tasks/material_parser_helper.rb

和模块lib/common_parser_methods.rb

我怎样才能将所有模块方法扩展到'material_parser_helper.rb'

因此,我可以在 MaterialParserHelper

的任何方法中调用clean_key

如果我在课后尝试扩展CommonParserMethods

我会收到错误NameError: uninitialized constant SummaryProjection::CommonMethods

class MaterialParserHelper
  extend CommonParserMethods

  def   test
      clean_key("jckdj")
  end

end

common_parser_methods.rb

module CommonParserMethods
  def clean_key(key)
    return key.strip.squish.gsub(/\s/, '_').gsub('-', '_').downcase
  end
end

application.rb中

config.autoload_paths += %W(#{config.root}/lib/ #{config.root}/lib/common_parser_methods.rb #{config.root}/lib/tasks)

1 个答案:

答案 0 :(得分:2)

您希望包含 CommonParserMethods,而不是扩展您的课程。这将为MaterialParserHelper提供CommonParserMethods中定义的方法。

有关include vs. extend here的更多信息:What is the difference between include and extend in Ruby?

也就是说,您的错误消息引用了一些未显示的代码;一个名为SummaryProjection的类。你确定MaterialParserMethods类导致了这个问题吗?