gbdev-acts_as_callback_logger 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
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