class ActiveSupport::CodeGenerator::MethodSet
Constants
METHOD_CACHES
Hash.new { |h, k| h[k] = Module.new }
Public class methods
Source code GitHub
# File activesupport/lib/active_support/code_generator.rb, line 8
def initialize(namespace)
@cache = METHOD_CACHES[namespace]
@sources = []
@methods = {}
end
Public instance methods
Source code GitHub
# File activesupport/lib/active_support/code_generator.rb, line 25
def apply(owner, path, line)
unless @sources.empty?
@cache.module_eval("# frozen_string_literal: true\n" + @sources.join(";"), path, line)
end
@methods.each do |name, as|
owner.define_method(name, @cache.instance_method(as))
end
end
Source code GitHub
# File activesupport/lib/active_support/code_generator.rb, line 14
def define_cached_method(name, as: name)
name = name.to_sym
as = as.to_sym
@methods.fetch(name) do
unless @cache.method_defined?(as)
yield @sources
end
@methods[name] = as
end
end