@@base Object, Object TemplX var. , Module # class_variable_set class_variable_get, .
: , make_templ self.const_missing, , Object . eval (string), . NameError, const_missing, , - - .
class Object
def self.const_missing(name)
if name =~ /^Templ(\d+)$/
return make_templ $1.to_i
end
super
end
private
def self.make_templ(base)
klass_name = "Templ#{base}"
unless const_defined? klass_name
klass = Class.new(Object) do
class_variable_set :@@base, base
def initialize
puts "Inited with base == #{self.class.class_variable_get(:@@base)}"
end
end
const_set klass_name, klass
end
const_get klass_name
end
end
. . , @@base, , , , . : Fowler, RailsTips