diff options
| author | simon <simon@zagal.(none)> | 2009-02-09 21:55:02 +0100 |
|---|---|---|
| committer | hukl <hukl@eight.local> | 2009-02-15 20:22:07 +0100 |
| commit | bed876819207e3ae84a285470b39544c2850f38b (patch) | |
| tree | 1ddd43697228ee6457bec9ca6cece62a602a74de /lib | |
| parent | 654f1542cafb3a8fc6bcd559952ae1a14c825fc9 (diff) | |
* here comes da wicked sick auditing observer hack
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/auditing.rb | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/lib/auditing.rb b/lib/auditing.rb new file mode 100644 index 0000000..5379148 --- /dev/null +++ b/lib/auditing.rb | |||
| @@ -0,0 +1,26 @@ | |||
| 1 | module Auditing | ||
| 2 | def self.included(base) | ||
| 3 | ActiveRecord::Base.observers.each do |observer| | ||
| 4 | observer = if observer.respond_to?(:to_sym) | ||
| 5 | observer.to_s.camelize.constantize.instance | ||
| 6 | elsif observer.respond_to?(:instance) | ||
| 7 | observer.instance | ||
| 8 | else | ||
| 9 | raise ArgumentError, "#{observer} is an invalid class name" | ||
| 10 | end | ||
| 11 | base.around_filter(observer) if observer.is_a?(Auditing::Observer) | ||
| 12 | end | ||
| 13 | end | ||
| 14 | |||
| 15 | class Observer < ActiveRecord::Observer | ||
| 16 | attr_accessor :controller | ||
| 17 | |||
| 18 | def before(controller) | ||
| 19 | self.controller = controller | ||
| 20 | end | ||
| 21 | |||
| 22 | def after(controller) | ||
| 23 | self.controller = nil | ||
| 24 | end | ||
| 25 | end | ||
| 26 | end \ No newline at end of file | ||
