Methods
Constants
METHOD_CACHES | = | Hash.new { |h, k| h[k] = Module.new } |
Class Public methods
new(namespace)
📝 Source code
# File activesupport/lib/active_support/code_generator.rb, line 8
def initialize(namespace)
@cache = METHOD_CACHES[namespace]
@sources = []
@methods = {}
@canonical_methods = {}
end
🔎 See on GitHub
Instance Public methods
apply(owner, path, line)
📝 Source code
# File activesupport/lib/active_support/code_generator.rb, line 28
def apply(owner, path, line)
unless @sources.empty?
@cache.module_eval("# frozen_string_literal: true\n" + @sources.join(";"), path, line)
end
@canonical_methods.clear
@methods.each do |as, canonical_name|
owner.define_method(as, @cache.instance_method(canonical_name))
end
end
🔎 See on GitHub
define_cached_method(canonical_name, as: nil)
📝 Source code
# File activesupport/lib/active_support/code_generator.rb, line 15
def define_cached_method(canonical_name, as: nil)
canonical_name = canonical_name.to_sym
as = (as || canonical_name).to_sym
@methods.fetch(as) do
unless @cache.method_defined?(canonical_name) || @canonical_methods[canonical_name]
yield @sources
end
@canonical_methods[canonical_name] = true
@methods[as] = canonical_name
end
end
🔎 See on GitHub