active_record_voyeur 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/init.rb ADDED
@@ -0,0 +1 @@
1
+ #require 'active_record_voyeur'
@@ -0,0 +1,51 @@
1
+ require 'singleton'
2
+ require 'rails_extensions/active_record_base'
3
+ class ActiveRecord::Voyeur
4
+
5
+ CALLBACKS = [:create, :save, :update, :destroy, :validation, :validation_on_create, :validation_on_update]
6
+
7
+ class << self
8
+
9
+ attr_accessor :peep_list
10
+
11
+ def initialize
12
+ self.peep_list = []
13
+ end
14
+
15
+ def peep(*args)
16
+ puts "#{self.to_s} peeping... #{args.collect{|c| c.to_s.camelcase}.join(', ')}"
17
+ self.peep_list = args
18
+ end
19
+
20
+ CALLBACKS.each do |cb|
21
+ [:after, :before].each do |verb|
22
+ define_method("#{verb}_#{cb}") do |*meths|
23
+ begin
24
+ self.peep_list.each do |klass|
25
+ meths.each do |m|
26
+ k = klass.to_s.camelcase.constantize # User
27
+ callback = "#{self.to_s.methodize}_#{m}" # before_save_my_method
28
+ v = self.to_s.constantize.instance # FooVoyeur
29
+ k.instance_eval do
30
+ define_method(callback) do
31
+ v.send(m, self)
32
+ end
33
+ eval("#{verb}_#{cb} :#{callback}")
34
+ end # instance_eval
35
+ end # each method to run on callback
36
+ end # each klass in peep list
37
+ rescue Exception => e
38
+ # puts "oops: #{e.inspect}"
39
+ end
40
+ end # define (before_save)
41
+ end # verb
42
+ end # cb
43
+
44
+ def inherited(child)
45
+ child.send(:include, Singleton) # => Make the child a singleton class
46
+ child.to_s.constantize.instance # => start an instance of the child class
47
+ end
48
+
49
+ end
50
+
51
+ end
@@ -0,0 +1,29 @@
1
+ class ActiveRecord::Base
2
+
3
+ def inspect_callbacks(meth = :all)
4
+ meth = meth.to_sym
5
+ cbs = {}
6
+ case meth
7
+ when :all
8
+ ActiveRecord::Voyeur::CALLBACKS.each do |cb|
9
+ [:before, :after].each do |verb|
10
+ cbs["#{verb}_#{cb}"] = self.send(:callbacks_for, "#{verb}_#{cb}")
11
+ end
12
+ end
13
+ else
14
+ cbs[meth] = self.send(:callbacks_for, meth)
15
+ end
16
+ t = ""
17
+ cbs.each_pair do |method, callbacks|
18
+ t << method.to_s
19
+ t << ":\n"
20
+ callbacks.uniq.each do |c|
21
+ t << c.to_s
22
+ t << "\n" << "-" * 50 << "\n"
23
+ end
24
+ t << "*" * 100 << "\n"
25
+ end
26
+ t
27
+ end
28
+
29
+ end
@@ -0,0 +1,5 @@
1
+ --- !ruby/object:RubyForgeConfig
2
+ gem_name: active_record_voyeur
3
+ package: active_record_voyeur
4
+ project: magrathea
5
+ version: 1.0.2
metadata ADDED
@@ -0,0 +1,58 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: active_record_voyeur
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.2
5
+ platform: ruby
6
+ authors:
7
+ - markbates
8
+ autorequire:
9
+ - active_record_voyeur
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2008-01-31 00:00:00 -05:00
14
+ default_executable:
15
+ dependencies: []
16
+
17
+ description: "active_record_voyeur was developed by: markbates"
18
+ email:
19
+ executables: []
20
+
21
+ extensions: []
22
+
23
+ extra_rdoc_files: []
24
+
25
+ files:
26
+ - init.rb
27
+ - lib/active_record_voyeur.rb
28
+ - lib/rails_extensions/active_record_base.rb
29
+ - lib/tasks/rubyforge_config.yml
30
+ has_rdoc: false
31
+ homepage:
32
+ post_install_message:
33
+ rdoc_options: []
34
+
35
+ require_paths:
36
+ - lib
37
+ - lib
38
+ required_ruby_version: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: "0"
43
+ version:
44
+ required_rubygems_version: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: "0"
49
+ version:
50
+ requirements: []
51
+
52
+ rubyforge_project: magrathea
53
+ rubygems_version: 1.0.1
54
+ signing_key:
55
+ specification_version: 2
56
+ summary: active_record_voyeur
57
+ test_files: []
58
+