93: def initialize(model, name, options = {})
94: @model = model
95: @name = name
96:
97: @cache_class = nil
98: @terminus_class = nil
99:
100: raise(ArgumentError, "Indirection %s is already defined" % @name) if @@indirections.find { |i| i.name == @name }
101: @@indirections << self
102:
103: if mod = options[:extend]
104: extend(mod)
105: options.delete(:extend)
106: end
107:
108:
109: options.each do |name, value|
110: begin
111: send(name.to_s + "=", value)
112: rescue NoMethodError
113: raise ArgumentError, "%s is not a valid Indirection parameter" % name
114: end
115: end
116: end