mixin不包含的实例方法

时间:2014-06-19 09:51:18

标签: ruby inheritance mixins

我在add_log method not defined error中致电add_log后,AlarmLogger

AlarmLogger已经inherited Logger

如何修复它,谢谢

test.rb

include TestingDataLoad
class AlarmLogger < Logger
   def run()
    add_log do | new_log, response|
      new_log.brief_content = hash_values_to_int(response[:values])
    end
  end

testing_data_load.rb

module TestingDataLoad

  class Logger



     def add_log
end
end

2 个答案:

答案 0 :(得分:1)

我怀疑你可能继承自标准库Logger类。

您可以通过添加

轻松验证这一点
puts Logger.inspect

包括之后。如果它输出“TestingDataLoad :: Logger”,那么它已经选择了你的课程,如果没有,那么它就没有了。

最简单的解决方法是让AlarmLogger继承TestingDataLoad::Logger

答案 1 :(得分:0)

我认为您应该在包含该文件之前要求该文件

require 'testing_data_load'

include TestingDataLoad
class AlarmLogger < Logger
   def run
    add_log do | new_log, response|
      new_log.brief_content = hash_values_to_int(response[:values])
     end
   end
end