gbdev-acts_as_callback_logger 0.3.0 → 0.4.0

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.
Files changed (2) hide show
  1. data/lib/callback_logger.rb +18 -3
  2. metadata +2 -2
@@ -8,10 +8,14 @@ module GBDev #:nodoc:
8
8
  end
9
9
 
10
10
  module ClassMethods
11
- attr_accessor :callback_logger_text_attr, :callback_logger_model, :callback_logger_object_url
11
+ attr_accessor :callback_logger_text_attr, # The text used to use for this entry. (ie user name). If not set the id will be used.
12
+ :callback_logger_model, # The model this entry is storing
13
+ :callback_logger_object_url, # The url to view this object in (ie show or edit view)
14
+ :callback_logger_only, # Will only add a log entry if these attributes are changed on update
15
+ :callback_logger_except # Will log all changes except these on update. If -only- is set then -except- will be ignored.
12
16
 
13
17
  def log_callbacks(*args)
14
- options = {:text => '', :object_url => {}, :aacl_model => 'AppLog'}
18
+ options = {:text => '', :object_url => {}, :aacl_model => 'AppLog', :only => [], :except => []}
15
19
  options.merge!(args.pop) unless args.empty?
16
20
 
17
21
  self.callback_logger_text_attr = options.delete(:text).to_sym unless options[:text].blank?
@@ -20,6 +24,9 @@ module GBDev #:nodoc:
20
24
  mod = options.delete(:aacl_model).titleize.gsub(' ','')
21
25
  mod = ActiveSupport::Inflector.camelize(mod).constantize
22
26
  self.callback_logger_model = mod
27
+
28
+ self.callback_logger_only = options.delete(:only)
29
+ self.callback_logger_except = options.delete(:except)
23
30
 
24
31
  extend GBDev::CallbackLogger::SingletonMethods
25
32
  include GBDev::CallbackLogger::InstanceMethods
@@ -50,7 +57,15 @@ module GBDev #:nodoc:
50
57
  end
51
58
 
52
59
  def log_update
53
- data = self.changes.keys.collect{ |key| "#{key}||#{self.changes[key][0]}||#{self.changes[key][1]}" }.join('|::|')
60
+ changes_to_log = self.changes
61
+
62
+ if !self.class.callback_logger_only.empty?
63
+ changes_to_log.delete_if { |key,value| !self.class.callback_logger_only.include?(key.to_sym) }
64
+ elsif !self.class.callback_logger_except.empty?
65
+ self.class.callback_logger_except.each { |key| changes_to_log.delete(key.to_s) }
66
+ end
67
+
68
+ data = changes_to_log.keys.collect{ |key| "#{key}||#{self.changes[key][0]}||#{self.changes[key][1]}" }.join('|::|')
54
69
  data = "id||#{self.id}||#{self.id}|::|#{data}" unless data.empty?
55
70
 
56
71
  class_name = self.class.to_s.titleize.downcase
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gbdev-acts_as_callback_logger
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Wes Hays
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2008-12-05 00:00:00 -08:00
13
+ date: 2008-12-10 00:00:00 -08:00
14
14
  default_executable:
15
15
  dependencies: []
16
16