appstats 0.21.1 → 0.21.2

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.
@@ -8,7 +8,8 @@ module Appstats
8
8
 
9
9
  def self.audit_create(obj, options = {})
10
10
  count = 0
11
- return count if obj.nil?
11
+ return count unless auditable?(obj)
12
+
12
13
  table_name = obj.class.table_name
13
14
  obj_name = obj.class.name
14
15
 
@@ -23,7 +24,7 @@ module Appstats
23
24
 
24
25
  def self.audit_update(obj, options = {})
25
26
  count = 0
26
- return count if obj.nil?
27
+ return count unless auditable?(obj)
27
28
 
28
29
  obj.changed_attributes.each do |obj_attr,old_value|
29
30
  new_value = obj.send("#{obj_attr}")
@@ -33,21 +34,26 @@ module Appstats
33
34
  end
34
35
 
35
36
  def self.audit_destroy(obj, options = {})
36
- count = save_audit(obj, { :action => "destroyed" }, options)
37
+ count = 0
38
+ return count unless auditable?(obj)
39
+ count += save_audit(obj, { :action => "destroyed" }, options)
37
40
  count
38
41
  end
39
42
 
40
43
  private
44
+
45
+ def self.auditable?(obj)
46
+ return false if obj.nil?
47
+ return false if obj.class == Appstats::Audit # cannot audit yourself - infinite recursion issues
48
+ true
49
+ end
41
50
 
42
51
  def self.save_audit(obj,custom_fields,options = {})
43
- return 0 if obj.nil?
44
-
45
52
  if custom_fields.key?(:obj_attr)
46
53
  obj_attr = custom_fields[:obj_attr]
47
54
  return 0 if (options.key?(:except) && options[:except].include?(obj_attr.to_sym))
48
55
  return 0 if (options.key?(:only) && !options[:only].include?(obj_attr.to_sym))
49
56
  end
50
-
51
57
  column_type = custom_fields.key?(:obj_attr) ? obj.class.columns_hash[custom_fields[:obj_attr]].sql_type : nil
52
58
  obj_type = custom_fields.key?(:obj_attr) ? obj.class.columns_hash[custom_fields[:obj_attr]].type : nil
53
59
  default_fields = { :table_name => obj.class.table_name, :column_type => column_type, :obj_type => obj_type, :obj_name => obj.class.name, :obj_id => obj.id, :old_value_full => custom_fields[:old_value], :new_value_full => custom_fields[:new_value] }
@@ -1,3 +1,3 @@
1
1
  module Appstats
2
- VERSION = "0.21.1"
2
+ VERSION = "0.21.2"
3
3
  end
data/spec/audit_spec.rb CHANGED
@@ -1,6 +1,11 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  module Appstats
4
+
5
+ class Audit
6
+ acts_as_auditable
7
+ end
8
+
4
9
  describe Audit do
5
10
 
6
11
  before(:each) do
@@ -41,6 +46,10 @@ module Appstats
41
46
 
42
47
  end
43
48
 
49
+ it "should ignore itself - even if requested" do
50
+ Audit.create(:table_name => "ignore")
51
+ end
52
+
44
53
  describe "save a new object" do
45
54
 
46
55
  it "should call audit_create" do
data/spec/query_spec.rb CHANGED
@@ -496,6 +496,8 @@ module Appstats
496
496
  result = query.run
497
497
  result.count.should == 10
498
498
  result.group_by.should == "service_provider, user"
499
+
500
+ # sometimes it is four?!?
499
501
  result.sub_results.size.should == 3
500
502
 
501
503
  result.sub_results[0].should == SubResult.new(:context_filter => "a, 1", :count => 5, :ratio_of_total => 0.50)
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: appstats
3
3
  version: !ruby/object:Gem::Version
4
- hash: 73
4
+ hash: 79
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 21
9
- - 1
10
- version: 0.21.1
9
+ - 2
10
+ version: 0.21.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Andrew Forward
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-05-11 00:00:00 -04:00
18
+ date: 2011-05-12 00:00:00 -04:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency