1

ロガーがモジュールに対して持つメソッドを定義し、それらをロガーを返すメソッドに委任したいと思います。

module MyLogger
  def self.logger
    # return a Logger, whatever
  end 

  [:debug, :info, :warn, :error, :fatal] do |_method|
    def self._method *args # WRONG. Want to define something named `_method` for the class
      logger.send _method, *args
    end
  end 
end

これが機能するように間違った行を修正するにはどうすればよいですか?

4

1 に答える 1

7
module MyLogger
  def self.logger *args
    # return a Logger, whatever
  end 

  [:debug, :info, :warn, :error, :fatal].each do |_method|
    define_singleton_method _method do |*args|
      logger.send _method, *args
    end
  end

end

p MyLogger.singleton_methods
# => [:logger, :debug, :info, :warn, :error, :fatal]
于 2012-12-11T19:39:11.303 に答える