diff options
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 | ||
