auditable 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
data/.travis.yml ADDED
@@ -0,0 +1,8 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.8.7
4
+ - 1.9.2
5
+ - 1.9.3
6
+ - ruby-head
7
+ # uncomment this line if your project needs to run something other than `rake`:
8
+ script: bundle exec rspec spec
data/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # Auditable
2
2
 
3
+ [![Build Status](https://secure.travis-ci.org/harleyttd/auditable.png?branch=master)](http://travis-ci.org/harleyttd/auditable)
4
+
3
5
  There are a lot of gems under https://www.ruby-toolbox.com/categories/Active_Record_Versioning and https://www.ruby-toolbox.com/categories/Active_Record_User_Stamping but there are various issues with them (as of this writing):
4
6
 
5
7
  * Almost all of them are outdated and not working with Rails 3.2.2. Some of the popular ones such as `papertrail` and `vestal_versions` have many issues and pull requests but haven't been addressed or merged. Based on the large number of forks of these popular gems, people seem to be OK with their own gem tweaks. Some tweaks are good, but some are too hackish (to deal with recent Rails changes) based on the commits that I have read. I have tried some of the more popular ones but they don't work reliably for something simple I'm trying to achieve.
@@ -42,7 +42,7 @@ module Auditable
42
42
 
43
43
  # Mark the latest record in order to easily find and perform diff against later
44
44
  def audit_tag_with(tag)
45
- last_audit.update_attribute(:tag, tag)
45
+ last_audit.update_attribute(:tag, tag) if last_audit
46
46
  end
47
47
 
48
48
  # Take a snapshot of and save the current state of the audited record's audited attributes
@@ -62,7 +62,7 @@ module Auditable
62
62
 
63
63
  # Get the latest changes by comparing the latest two audits
64
64
  def audited_changes(options = {})
65
- audits.last.latest_diff(options)
65
+ audits.last.try(:latest_diff, options) || {}
66
66
  end
67
67
 
68
68
  #def self.included(base)
@@ -1,3 +1,3 @@
1
1
  module Auditable
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
@@ -17,6 +17,26 @@ describe Auditable do
17
17
  survey.audits.last.action.should == "create"
18
18
  end
19
19
 
20
+ context "for existing records without existing audits" do
21
+ before do
22
+ survey.audits.delete_all
23
+ end
24
+
25
+ it "should not not fail with errors" do
26
+ survey.audit_tag_with("something") # no audit to tag but should be ok with it
27
+ survey.audits.count.should == 0
28
+ survey.audited_changes.should == {}
29
+ survey.audited_changes(:tag => "something").should == {}
30
+ end
31
+
32
+ it "should work after first update " do
33
+ survey.update_attributes :title => "new title"
34
+ survey.audited_changes.should == {"title" => ["test survey", "new title"]}
35
+ survey.audited_changes(:tag => "something").should == {"title" => [nil, "new title"]}
36
+ survey.audits.count.should == 1
37
+ end
38
+ end
39
+
20
40
  it "should behave similar to ActiveRecord::Dirty#changes" do
21
41
  # first, let's see how ActiveRecord::Dirty#changes behave
22
42
  survey.title = "new title"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: auditable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2012-03-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
16
- requirement: &2152079980 !ruby/object:Gem::Requirement
16
+ requirement: &2156151900 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *2152079980
24
+ version_requirements: *2156151900
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rspec
27
- requirement: &2152079360 !ruby/object:Gem::Requirement
27
+ requirement: &2156151400 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '2'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *2152079360
35
+ version_requirements: *2156151400
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: watchr
38
- requirement: &2152078920 !ruby/object:Gem::Requirement
38
+ requirement: &2156150840 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *2152078920
46
+ version_requirements: *2156150840
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: sqlite3
49
- requirement: &2152078440 !ruby/object:Gem::Requirement
49
+ requirement: &2156150280 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *2152078440
57
+ version_requirements: *2156150280
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: yard
60
- requirement: &2152078000 !ruby/object:Gem::Requirement
60
+ requirement: &2156149760 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *2152078000
68
+ version_requirements: *2156149760
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rdiscount
71
- requirement: &2152077520 !ruby/object:Gem::Requirement
71
+ requirement: &2156149340 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: '0'
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *2152077520
79
+ version_requirements: *2156149340
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: activesupport
82
- requirement: &2168983480 !ruby/object:Gem::Requirement
82
+ requirement: &2156148740 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: '3.0'
88
88
  type: :runtime
89
89
  prerelease: false
90
- version_requirements: *2168983480
90
+ version_requirements: *2156148740
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: activerecord
93
- requirement: &2168982960 !ruby/object:Gem::Requirement
93
+ requirement: &2156147660 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ! '>='
@@ -98,7 +98,7 @@ dependencies:
98
98
  version: '3.0'
99
99
  type: :runtime
100
100
  prerelease: false
101
- version_requirements: *2168982960
101
+ version_requirements: *2156147660
102
102
  description: A simple gem that audit models' attributes or methods by taking snapshots
103
103
  and diff them for you. Starting from scratch to work with Rails 3.2.2 onwards
104
104
  email:
@@ -110,6 +110,7 @@ files:
110
110
  - .gitignore
111
111
  - .rspec
112
112
  - .rvmrc
113
+ - .travis.yml
113
114
  - Gemfile
114
115
  - LICENSE
115
116
  - README.md
@@ -140,7 +141,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
140
141
  version: '0'
141
142
  segments:
142
143
  - 0
143
- hash: -1266908834765316002
144
+ hash: -2973896956305891645
144
145
  required_rubygems_version: !ruby/object:Gem::Requirement
145
146
  none: false
146
147
  requirements:
@@ -149,7 +150,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
149
150
  version: '0'
150
151
  segments:
151
152
  - 0
152
- hash: -1266908834765316002
153
+ hash: -2973896956305891645
153
154
  requirements: []
154
155
  rubyforge_project:
155
156
  rubygems_version: 1.8.17