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