gbdev-acts_as_callback_logger 0.1.2 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/init.rb +5 -4
- data/lib/acts_as_callback_logger.rb +4 -0
- data/lib/callback_logger.rb +21 -9
- data/spec/spec_helper.rb +5 -4
- metadata +1 -1
data/init.rb
CHANGED
@@ -1,7 +1,8 @@
|
|
1
|
+
require 'active_record'
|
1
2
|
require 'acts_as_callback_logger'
|
2
3
|
require 'callback_logger'
|
3
4
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
5
|
+
ActiveRecord::Base.class_eval do
|
6
|
+
include GBDev::Acts::CallbackLogger
|
7
|
+
include GBDev::CallbackLogger
|
8
|
+
end
|
@@ -16,6 +16,10 @@ module GBDev #:nodoc:
|
|
16
16
|
|
17
17
|
extend GBDev::Acts::CallbackLogger::SingletonMethods
|
18
18
|
include GBDev::Acts::CallbackLogger::InstanceMethods
|
19
|
+
|
20
|
+
# class_eval do
|
21
|
+
# # DO NOTHING FOR NOW
|
22
|
+
# end # class_eval
|
19
23
|
end # acts_as_callback_logger
|
20
24
|
|
21
25
|
end # ClassMethods
|
data/lib/callback_logger.rb
CHANGED
@@ -8,16 +8,26 @@ module GBDev #:nodoc:
|
|
8
8
|
end
|
9
9
|
|
10
10
|
module ClassMethods
|
11
|
-
attr_accessor :callback_logger_text_attr
|
11
|
+
attr_accessor :callback_logger_text_attr, :aacl_model
|
12
12
|
|
13
13
|
def log_callbacks(new_options = {})
|
14
|
-
options = {:text => 'name'}
|
14
|
+
options = {:text => 'name', :aacl_model => 'AppLog'}
|
15
15
|
options.merge!(new_options)
|
16
16
|
|
17
17
|
self.callback_logger_text_attr = options[:text]
|
18
|
+
|
19
|
+
mod = options[:aacl_model].titleize.gsub(' ','')
|
20
|
+
mod = Inflector.camelize(mod).constantize
|
21
|
+
self.aacl_model = mod
|
18
22
|
|
19
23
|
extend GBDev::CallbackLogger::SingletonMethods
|
20
24
|
include GBDev::CallbackLogger::InstanceMethods
|
25
|
+
|
26
|
+
class_eval do
|
27
|
+
after_create :log_create
|
28
|
+
after_update :log_update
|
29
|
+
after_destroy :log_destroy
|
30
|
+
end # class_eval
|
21
31
|
end # log_callbacks
|
22
32
|
|
23
33
|
end # ClassMethods
|
@@ -28,17 +38,18 @@ module GBDev #:nodoc:
|
|
28
38
|
end # SingletonMethods
|
29
39
|
|
30
40
|
module InstanceMethods
|
31
|
-
|
41
|
+
|
42
|
+
def log_create
|
32
43
|
self.class.callback_logger_text_attr = self.class.callback_logger_text_attr.to_sym
|
33
44
|
class_name = self.class.to_s.titleize.downcase
|
34
45
|
descr_text = self.send(self.class.callback_logger_text_attr)
|
35
46
|
msg = "Created #{class_name} (#{descr_text})"
|
36
|
-
|
47
|
+
self.class.aacl_model.create({:msg => msg})
|
37
48
|
rescue Exception => msg
|
38
49
|
# Just fail quietly
|
39
50
|
end
|
40
51
|
|
41
|
-
def
|
52
|
+
def log_update
|
42
53
|
data = self.changes.keys.collect{ |key| "#{key}||#{self.changes[key][0]}||#{self.changes[key][1]}" }.join('|::|')
|
43
54
|
data = "id||#{self.id}||#{self.id}|::|#{data}" unless data.empty?
|
44
55
|
|
@@ -46,22 +57,23 @@ module GBDev #:nodoc:
|
|
46
57
|
class_name = self.class.to_s.titleize.downcase
|
47
58
|
descr_text = self.send(self.class.callback_logger_text_attr)
|
48
59
|
msg = "Updated #{class_name} (#{descr_text})"
|
49
|
-
|
60
|
+
self.class.aacl_model.create({:msg => msg, :data => data}) unless data.empty?
|
50
61
|
rescue Exception => msg
|
51
62
|
# Just fail quietly
|
52
63
|
end
|
53
|
-
|
54
|
-
def
|
64
|
+
|
65
|
+
def log_destroy
|
55
66
|
data = self.attributes.keys.collect{ |key| "#{key}||#{self.attributes[key]}" }.join('|::|')
|
56
67
|
|
57
68
|
self.class.callback_logger_text_attr = self.class.callback_logger_text_attr.to_sym
|
58
69
|
class_name = self.class.to_s.titleize.downcase
|
59
70
|
descr_text = self.send(self.class.callback_logger_text_attr)
|
60
71
|
msg = "Deleted #{class_name} (#{descr_text})"
|
61
|
-
|
72
|
+
self.class.aacl_model.create({:msg => msg, :data => data})
|
62
73
|
rescue Exception => msg
|
63
74
|
# Just fail quietly
|
64
75
|
end
|
76
|
+
|
65
77
|
end # InstanceMethods
|
66
78
|
|
67
79
|
end # CallbackLogger
|
data/spec/spec_helper.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require 'rubygems'
|
2
|
+
require 'ruby-debug'
|
3
|
+
require 'active_record'
|
3
4
|
require 'spec'
|
4
5
|
require 'mocha'
|
5
6
|
|
@@ -10,9 +11,9 @@ include GBDev::Acts::CallbackLogger
|
|
10
11
|
include GBDev::CallbackLogger
|
11
12
|
|
12
13
|
config = YAML::load(IO.read(File.dirname(__FILE__) + '/database.yml'))
|
13
|
-
ActiveRecord::Base.logger = Logger.new(File.dirname(__FILE__) +
|
14
|
+
ActiveRecord::Base.logger = Logger.new(File.dirname(__FILE__) + '/debug.log')
|
14
15
|
ActiveRecord::Base.establish_connection(config[ENV['DB'] || 'postgresql'])
|
15
16
|
|
16
|
-
load(File.dirname(__FILE__) +
|
17
|
+
load(File.dirname(__FILE__) + '/schema.rb') if File.exist?(File.dirname(__FILE__) + '/schema.rb')
|
17
18
|
|
18
19
|
|