1 # This extends Class to be able to use +cattr_accessor+ if active_support is not being used.
2 class Class
3 unless respond_to?(:cattr_reader)
4 def cattr_reader(sym)
5 class_eval(<<-EOS, __FILE__, __LINE__ + 1)
6 unless defined? @@#{sym}
7 @@#{sym} = nil
8 end
9
10 def self.#{sym}
11 @@#{sym}
12 end
13
14 def #{sym}
15 @@#{sym}
16 end
17 EOS
18 end
19
20 def cattr_writer(sym)
21 class_eval(<<-EOS, __FILE__, __LINE__ + 1)
22 unless defined? @@#{sym}
23 @@#{sym} = nil
24 end
25
26 def self.#{sym}=(obj)
27 @@#{sym} = obj
28 end
29
30 def #{sym}=(obj)
31 @@#{sym} = obj
32 end
33 EOS
34 end
35
36 def cattr_accessor(*syms, &blk)
37 cattr_reader(*syms)
38 cattr_writer(*syms, &blk)
39 end
40 end
41 end