小编Jus*_*tin的帖子

如何包含扩展classmethods并正确引用class var的模块

我的期望是在评论中.

require 'logger'

module Logging
  attr_accessor :logger

  def logger
    return @logger if @logger # allow items to have own loggers
    @@logger ||= Logger.new(STDERR)
    puts "Instance Class REF ID#{@@logger.__id__}"
    puts "Class ID #{self.class.logger.__id__}"
    @@logger
  end

  module ClassMethods
    def logger= logger
      @logger = logger
    end

    def logger
      @logger ||= Logger.new(STDERR)
      puts "Class Instance REF ID #{@logger.__id__}"
      @logger
    end
  end

  def self.included(base)
    base.extend(ClassMethods)
  end
end

class Test

  include Logging

  def wow
    logger.info 'wow'
  end
end

t = Test.new

# should be the same …
Run Code Online (Sandbox Code Playgroud)

ruby include extend

1
推荐指数
1
解决办法
5674
查看次数

标签 统计

extend ×1

include ×1

ruby ×1