audit_trail 0.0.1

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 (59) hide show
  1. data/.document +5 -0
  2. data/Gemfile +9 -0
  3. data/Gemfile.lock +99 -0
  4. data/LICENSE.txt +20 -0
  5. data/README +0 -0
  6. data/README.md +19 -0
  7. data/Rakefile +36 -0
  8. data/VERSION +1 -0
  9. data/app/models/change_event.rb +3 -0
  10. data/audit_trail.gemspec +110 -0
  11. data/lib/audit_trail.rb +11 -0
  12. data/lib/audit_trail/change_tracking.rb +64 -0
  13. data/lib/audit_trail/engine.rb +4 -0
  14. data/lib/audit_trail/model.rb +31 -0
  15. data/lib/generators/audit_trail/install_generator.rb +18 -0
  16. data/lib/generators/audit_trail/templates/migration.rb +16 -0
  17. data/test/audit_trail_test.rb +5 -0
  18. data/test/change_tracking_test.rb +242 -0
  19. data/test/test_app_3_1/Gemfile +8 -0
  20. data/test/test_app_3_1/Gemfile.lock +102 -0
  21. data/test/test_app_3_1/README +261 -0
  22. data/test/test_app_3_1/Rakefile +7 -0
  23. data/test/test_app_3_1/app/assets/images/rails.png +0 -0
  24. data/test/test_app_3_1/app/assets/javascripts/application.js +9 -0
  25. data/test/test_app_3_1/app/assets/stylesheets/application.css +7 -0
  26. data/test/test_app_3_1/app/controllers/application_controller.rb +3 -0
  27. data/test/test_app_3_1/app/helpers/application_helper.rb +2 -0
  28. data/test/test_app_3_1/app/views/layouts/application.html.erb +14 -0
  29. data/test/test_app_3_1/config.ru +4 -0
  30. data/test/test_app_3_1/config/application.rb +48 -0
  31. data/test/test_app_3_1/config/boot.rb +6 -0
  32. data/test/test_app_3_1/config/database.yml +42 -0
  33. data/test/test_app_3_1/config/environment.rb +5 -0
  34. data/test/test_app_3_1/config/environments/development.rb +30 -0
  35. data/test/test_app_3_1/config/environments/production.rb +60 -0
  36. data/test/test_app_3_1/config/environments/test.rb +42 -0
  37. data/test/test_app_3_1/config/initializers/backtrace_silencers.rb +7 -0
  38. data/test/test_app_3_1/config/initializers/inflections.rb +10 -0
  39. data/test/test_app_3_1/config/initializers/mime_types.rb +5 -0
  40. data/test/test_app_3_1/config/initializers/secret_token.rb +7 -0
  41. data/test/test_app_3_1/config/initializers/session_store.rb +8 -0
  42. data/test/test_app_3_1/config/initializers/wrap_parameters.rb +14 -0
  43. data/test/test_app_3_1/config/locales/en.yml +5 -0
  44. data/test/test_app_3_1/config/routes.rb +58 -0
  45. data/test/test_app_3_1/db/schema.rb +15 -0
  46. data/test/test_app_3_1/db/seeds.rb +7 -0
  47. data/test/test_app_3_1/log/development.log +3 -0
  48. data/test/test_app_3_1/log/test.log +17791 -0
  49. data/test/test_app_3_1/public/404.html +26 -0
  50. data/test/test_app_3_1/public/422.html +26 -0
  51. data/test/test_app_3_1/public/500.html +26 -0
  52. data/test/test_app_3_1/public/favicon.ico +0 -0
  53. data/test/test_app_3_1/public/index.html +241 -0
  54. data/test/test_app_3_1/public/robots.txt +5 -0
  55. data/test/test_app_3_1/script/rails +6 -0
  56. data/test/test_app_3_1/test/test_helper.rb +13 -0
  57. data/test/test_app_3_1/tmp/cache/4B5/180/experiments +0 -0
  58. data/test/test_helper.rb +66 -0
  59. metadata +198 -0
@@ -0,0 +1,26 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The page you were looking for doesn't exist (404)</title>
5
+ <style type="text/css">
6
+ body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
7
+ div.dialog {
8
+ width: 25em;
9
+ padding: 0 4em;
10
+ margin: 4em auto 0 auto;
11
+ border: 1px solid #ccc;
12
+ border-right-color: #999;
13
+ border-bottom-color: #999;
14
+ }
15
+ h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <!-- This file lives in public/404.html -->
21
+ <div class="dialog">
22
+ <h1>The page you were looking for doesn't exist.</h1>
23
+ <p>You may have mistyped the address or the page may have moved.</p>
24
+ </div>
25
+ </body>
26
+ </html>
@@ -0,0 +1,26 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The change you wanted was rejected (422)</title>
5
+ <style type="text/css">
6
+ body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
7
+ div.dialog {
8
+ width: 25em;
9
+ padding: 0 4em;
10
+ margin: 4em auto 0 auto;
11
+ border: 1px solid #ccc;
12
+ border-right-color: #999;
13
+ border-bottom-color: #999;
14
+ }
15
+ h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <!-- This file lives in public/422.html -->
21
+ <div class="dialog">
22
+ <h1>The change you wanted was rejected.</h1>
23
+ <p>Maybe you tried to change something you didn't have access to.</p>
24
+ </div>
25
+ </body>
26
+ </html>
@@ -0,0 +1,26 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>We're sorry, but something went wrong (500)</title>
5
+ <style type="text/css">
6
+ body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
7
+ div.dialog {
8
+ width: 25em;
9
+ padding: 0 4em;
10
+ margin: 4em auto 0 auto;
11
+ border: 1px solid #ccc;
12
+ border-right-color: #999;
13
+ border-bottom-color: #999;
14
+ }
15
+ h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <!-- This file lives in public/500.html -->
21
+ <div class="dialog">
22
+ <h1>We're sorry, but something went wrong.</h1>
23
+ <p>We've been notified about this issue and we'll take a look at it shortly.</p>
24
+ </div>
25
+ </body>
26
+ </html>
File without changes
@@ -0,0 +1,241 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>Ruby on Rails: Welcome aboard</title>
5
+ <style type="text/css" media="screen">
6
+ body {
7
+ margin: 0;
8
+ margin-bottom: 25px;
9
+ padding: 0;
10
+ background-color: #f0f0f0;
11
+ font-family: "Lucida Grande", "Bitstream Vera Sans", "Verdana";
12
+ font-size: 13px;
13
+ color: #333;
14
+ }
15
+
16
+ h1 {
17
+ font-size: 28px;
18
+ color: #000;
19
+ }
20
+
21
+ a {color: #03c}
22
+ a:hover {
23
+ background-color: #03c;
24
+ color: white;
25
+ text-decoration: none;
26
+ }
27
+
28
+
29
+ #page {
30
+ background-color: #f0f0f0;
31
+ width: 750px;
32
+ margin: 0;
33
+ margin-left: auto;
34
+ margin-right: auto;
35
+ }
36
+
37
+ #content {
38
+ float: left;
39
+ background-color: white;
40
+ border: 3px solid #aaa;
41
+ border-top: none;
42
+ padding: 25px;
43
+ width: 500px;
44
+ }
45
+
46
+ #sidebar {
47
+ float: right;
48
+ width: 175px;
49
+ }
50
+
51
+ #footer {
52
+ clear: both;
53
+ }
54
+
55
+ #header, #about, #getting-started {
56
+ padding-left: 75px;
57
+ padding-right: 30px;
58
+ }
59
+
60
+
61
+ #header {
62
+ background-image: url("/assets/rails.png");
63
+ background-repeat: no-repeat;
64
+ background-position: top left;
65
+ height: 64px;
66
+ }
67
+ #header h1, #header h2 {margin: 0}
68
+ #header h2 {
69
+ color: #888;
70
+ font-weight: normal;
71
+ font-size: 16px;
72
+ }
73
+
74
+
75
+ #about h3 {
76
+ margin: 0;
77
+ margin-bottom: 10px;
78
+ font-size: 14px;
79
+ }
80
+
81
+ #about-content {
82
+ background-color: #ffd;
83
+ border: 1px solid #fc0;
84
+ margin-left: -55px;
85
+ margin-right: -10px;
86
+ }
87
+ #about-content table {
88
+ margin-top: 10px;
89
+ margin-bottom: 10px;
90
+ font-size: 11px;
91
+ border-collapse: collapse;
92
+ }
93
+ #about-content td {
94
+ padding: 10px;
95
+ padding-top: 3px;
96
+ padding-bottom: 3px;
97
+ }
98
+ #about-content td.name {color: #555}
99
+ #about-content td.value {color: #000}
100
+
101
+ #about-content ul {
102
+ padding: 0;
103
+ list-style-type: none;
104
+ }
105
+
106
+ #about-content.failure {
107
+ background-color: #fcc;
108
+ border: 1px solid #f00;
109
+ }
110
+ #about-content.failure p {
111
+ margin: 0;
112
+ padding: 10px;
113
+ }
114
+
115
+
116
+ #getting-started {
117
+ border-top: 1px solid #ccc;
118
+ margin-top: 25px;
119
+ padding-top: 15px;
120
+ }
121
+ #getting-started h1 {
122
+ margin: 0;
123
+ font-size: 20px;
124
+ }
125
+ #getting-started h2 {
126
+ margin: 0;
127
+ font-size: 14px;
128
+ font-weight: normal;
129
+ color: #333;
130
+ margin-bottom: 25px;
131
+ }
132
+ #getting-started ol {
133
+ margin-left: 0;
134
+ padding-left: 0;
135
+ }
136
+ #getting-started li {
137
+ font-size: 18px;
138
+ color: #888;
139
+ margin-bottom: 25px;
140
+ }
141
+ #getting-started li h2 {
142
+ margin: 0;
143
+ font-weight: normal;
144
+ font-size: 18px;
145
+ color: #333;
146
+ }
147
+ #getting-started li p {
148
+ color: #555;
149
+ font-size: 13px;
150
+ }
151
+
152
+
153
+ #sidebar ul {
154
+ margin-left: 0;
155
+ padding-left: 0;
156
+ }
157
+ #sidebar ul h3 {
158
+ margin-top: 25px;
159
+ font-size: 16px;
160
+ padding-bottom: 10px;
161
+ border-bottom: 1px solid #ccc;
162
+ }
163
+ #sidebar li {
164
+ list-style-type: none;
165
+ }
166
+ #sidebar ul.links li {
167
+ margin-bottom: 5px;
168
+ }
169
+
170
+ .filename {
171
+ font-style: italic;
172
+ }
173
+ </style>
174
+ <script type="text/javascript">
175
+ function about() {
176
+ info = document.getElementById('about-content');
177
+ if (window.XMLHttpRequest)
178
+ { xhr = new XMLHttpRequest(); }
179
+ else
180
+ { xhr = new ActiveXObject("Microsoft.XMLHTTP"); }
181
+ xhr.open("GET","rails/info/properties",false);
182
+ xhr.send("");
183
+ info.innerHTML = xhr.responseText;
184
+ info.style.display = 'block'
185
+ }
186
+ </script>
187
+ </head>
188
+ <body>
189
+ <div id="page">
190
+ <div id="sidebar">
191
+ <ul id="sidebar-items">
192
+ <li>
193
+ <h3>Browse the documentation</h3>
194
+ <ul class="links">
195
+ <li><a href="http://guides.rubyonrails.org/">Rails Guides</a></li>
196
+ <li><a href="http://api.rubyonrails.org/">Rails API</a></li>
197
+ <li><a href="http://www.ruby-doc.org/core/">Ruby core</a></li>
198
+ <li><a href="http://www.ruby-doc.org/stdlib/">Ruby standard library</a></li>
199
+ </ul>
200
+ </li>
201
+ </ul>
202
+ </div>
203
+
204
+ <div id="content">
205
+ <div id="header">
206
+ <h1>Welcome aboard</h1>
207
+ <h2>You&rsquo;re riding Ruby on Rails!</h2>
208
+ </div>
209
+
210
+ <div id="about">
211
+ <h3><a href="rails/info/properties" onclick="about(); return false">About your application&rsquo;s environment</a></h3>
212
+ <div id="about-content" style="display: none"></div>
213
+ </div>
214
+
215
+ <div id="getting-started">
216
+ <h1>Getting started</h1>
217
+ <h2>Here&rsquo;s how to get rolling:</h2>
218
+
219
+ <ol>
220
+ <li>
221
+ <h2>Use <code>rails generate</code> to create your models and controllers</h2>
222
+ <p>To see all available options, run it without parameters.</p>
223
+ </li>
224
+
225
+ <li>
226
+ <h2>Set up a default route and remove <span class="filename">public/index.html</span></h2>
227
+ <p>Routes are set up in <span class="filename">config/routes.rb</span>.</p>
228
+ </li>
229
+
230
+ <li>
231
+ <h2>Create your database</h2>
232
+ <p>Run <code>rake db:create</code> to create your database. If you're not using SQLite (the default), edit <span class="filename">config/database.yml</span> with your username and password.</p>
233
+ </li>
234
+ </ol>
235
+ </div>
236
+ </div>
237
+
238
+ <div id="footer">&nbsp;</div>
239
+ </div>
240
+ </body>
241
+ </html>
@@ -0,0 +1,5 @@
1
+ # See http://www.robotstxt.org/wc/norobots.html for documentation on how to use the robots.txt file
2
+ #
3
+ # To ban all spiders from the entire site uncomment the next two lines:
4
+ # User-Agent: *
5
+ # Disallow: /
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+ # This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
3
+
4
+ APP_PATH = File.expand_path('../../config/application', __FILE__)
5
+ require File.expand_path('../../config/boot', __FILE__)
6
+ require 'rails/commands'
@@ -0,0 +1,13 @@
1
+ ENV["RAILS_ENV"] = "test"
2
+ require File.expand_path('../../config/environment', __FILE__)
3
+ require 'rails/test_help'
4
+
5
+ class ActiveSupport::TestCase
6
+ # Setup all fixtures in test/fixtures/*.(yml|csv) for all tests in alphabetical order.
7
+ #
8
+ # Note: You'll currently still have to declare fixtures explicitly in integration tests
9
+ # -- they do not yet inherit this setting
10
+ fixtures :all
11
+
12
+ # Add more helper methods to be used by all tests here...
13
+ end
@@ -0,0 +1,66 @@
1
+ ENV['RAILS_ENV'] = 'test'
2
+ require "test_app_#{ENV['TEST_VERSION'] || '3_1'}/config/environment"
3
+
4
+ require "rails/test_help"
5
+ require 'mocha'
6
+ require 'pp'
7
+
8
+ # Re-create test database
9
+ `mysql -uroot -e 'DROP DATABASE IF EXISTS audit_trail_test; CREATE DATABASE audit_trail_test '`
10
+
11
+ # Define connection configuration
12
+ ActiveRecord::Base.configurations = {
13
+ 'test' => {
14
+ 'adapter' => 'mysql2',
15
+ 'username' => 'root',
16
+ 'encoding' => 'utf8',
17
+ 'database' => 'audit_trail_test',
18
+ }
19
+ }
20
+
21
+ ActiveRecord::Base.establish_connection 'test'
22
+
23
+ require 'audit_trail'
24
+
25
+ require File.expand_path('../../lib/generators/audit_trail/templates/migration.rb', __FILE__)
26
+
27
+ class CreateTrackedModels < ActiveRecord::Migration
28
+ def self.up
29
+ create_table(:tracked_models) do |t|
30
+ t.integer :count
31
+ t.decimal :price, :precision => 14, :scale => 2
32
+ t.string :note
33
+ t.string :untracked_column
34
+ t.boolean :yes_no
35
+ t.date :occurred_on
36
+ t.datetime :occurred_at
37
+ end
38
+ end
39
+
40
+ def self.down
41
+ drop_table :tracked_models
42
+ end
43
+ end
44
+
45
+
46
+ CreateAuditTrails.suppress_messages do
47
+ CreateAuditTrails.migrate( :up )
48
+ CreateTrackedModels.migrate( :up )
49
+ end
50
+
51
+ require 'active_support/all'
52
+ require File.expand_path('../../app/models/change_event.rb', __FILE__)
53
+
54
+
55
+ class ActiveSupport::TestCase
56
+
57
+ private
58
+
59
+ def declare_tracked_model
60
+ Object.const_set(:TrackedModel, Class.new(ActiveRecord::Base))
61
+ end
62
+
63
+ def cleanup_tracked_model
64
+ Object.send :remove_const, :TrackedModel
65
+ end
66
+ end
metadata ADDED
@@ -0,0 +1,198 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: audit_trail
3
+ version: !ruby/object:Gem::Version
4
+ hash: 29
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 1
10
+ version: 0.0.1
11
+ platform: ruby
12
+ authors:
13
+ - Tushar Ranka
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2012-07-24 00:00:00 Z
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ type: :runtime
22
+ requirement: &id001 !ruby/object:Gem::Requirement
23
+ none: false
24
+ requirements:
25
+ - - ~>
26
+ - !ruby/object:Gem::Version
27
+ hash: 5
28
+ segments:
29
+ - 3
30
+ - 1
31
+ version: "3.1"
32
+ version_requirements: *id001
33
+ name: rails
34
+ prerelease: false
35
+ - !ruby/object:Gem::Dependency
36
+ type: :development
37
+ requirement: &id002 !ruby/object:Gem::Requirement
38
+ none: false
39
+ requirements:
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ hash: 3
43
+ segments:
44
+ - 0
45
+ version: "0"
46
+ version_requirements: *id002
47
+ name: mysql2
48
+ prerelease: false
49
+ - !ruby/object:Gem::Dependency
50
+ type: :development
51
+ requirement: &id003 !ruby/object:Gem::Requirement
52
+ none: false
53
+ requirements:
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ hash: 3
57
+ segments:
58
+ - 0
59
+ version: "0"
60
+ version_requirements: *id003
61
+ name: mocha
62
+ prerelease: false
63
+ - !ruby/object:Gem::Dependency
64
+ type: :development
65
+ requirement: &id004 !ruby/object:Gem::Requirement
66
+ none: false
67
+ requirements:
68
+ - - ~>
69
+ - !ruby/object:Gem::Version
70
+ hash: 23
71
+ segments:
72
+ - 1
73
+ - 0
74
+ - 0
75
+ version: 1.0.0
76
+ version_requirements: *id004
77
+ name: bundler
78
+ prerelease: false
79
+ - !ruby/object:Gem::Dependency
80
+ type: :development
81
+ requirement: &id005 !ruby/object:Gem::Requirement
82
+ none: false
83
+ requirements:
84
+ - - ~>
85
+ - !ruby/object:Gem::Version
86
+ hash: 63
87
+ segments:
88
+ - 1
89
+ - 8
90
+ - 4
91
+ version: 1.8.4
92
+ version_requirements: *id005
93
+ name: jeweler
94
+ prerelease: false
95
+ description: tracks_changes provides a way to easily keep track of changes to ActiveRecord models at an attribute level and maintains the typecasting in the database.
96
+ email: tusharranka@gmail.com
97
+ executables: []
98
+
99
+ extensions: []
100
+
101
+ extra_rdoc_files:
102
+ - LICENSE.txt
103
+ - README
104
+ - README.md
105
+ files:
106
+ - .document
107
+ - Gemfile
108
+ - Gemfile.lock
109
+ - LICENSE.txt
110
+ - README
111
+ - README.md
112
+ - Rakefile
113
+ - VERSION
114
+ - app/models/change_event.rb
115
+ - audit_trail.gemspec
116
+ - lib/audit_trail.rb
117
+ - lib/audit_trail/change_tracking.rb
118
+ - lib/audit_trail/engine.rb
119
+ - lib/audit_trail/model.rb
120
+ - lib/generators/audit_trail/install_generator.rb
121
+ - lib/generators/audit_trail/templates/migration.rb
122
+ - test/audit_trail_test.rb
123
+ - test/change_tracking_test.rb
124
+ - test/test_app_3_1/Gemfile
125
+ - test/test_app_3_1/Gemfile.lock
126
+ - test/test_app_3_1/README
127
+ - test/test_app_3_1/Rakefile
128
+ - test/test_app_3_1/app/assets/images/rails.png
129
+ - test/test_app_3_1/app/assets/javascripts/application.js
130
+ - test/test_app_3_1/app/assets/stylesheets/application.css
131
+ - test/test_app_3_1/app/controllers/application_controller.rb
132
+ - test/test_app_3_1/app/helpers/application_helper.rb
133
+ - test/test_app_3_1/app/views/layouts/application.html.erb
134
+ - test/test_app_3_1/config.ru
135
+ - test/test_app_3_1/config/application.rb
136
+ - test/test_app_3_1/config/boot.rb
137
+ - test/test_app_3_1/config/database.yml
138
+ - test/test_app_3_1/config/environment.rb
139
+ - test/test_app_3_1/config/environments/development.rb
140
+ - test/test_app_3_1/config/environments/production.rb
141
+ - test/test_app_3_1/config/environments/test.rb
142
+ - test/test_app_3_1/config/initializers/backtrace_silencers.rb
143
+ - test/test_app_3_1/config/initializers/inflections.rb
144
+ - test/test_app_3_1/config/initializers/mime_types.rb
145
+ - test/test_app_3_1/config/initializers/secret_token.rb
146
+ - test/test_app_3_1/config/initializers/session_store.rb
147
+ - test/test_app_3_1/config/initializers/wrap_parameters.rb
148
+ - test/test_app_3_1/config/locales/en.yml
149
+ - test/test_app_3_1/config/routes.rb
150
+ - test/test_app_3_1/db/schema.rb
151
+ - test/test_app_3_1/db/seeds.rb
152
+ - test/test_app_3_1/log/development.log
153
+ - test/test_app_3_1/log/test.log
154
+ - test/test_app_3_1/public/404.html
155
+ - test/test_app_3_1/public/422.html
156
+ - test/test_app_3_1/public/500.html
157
+ - test/test_app_3_1/public/favicon.ico
158
+ - test/test_app_3_1/public/index.html
159
+ - test/test_app_3_1/public/robots.txt
160
+ - test/test_app_3_1/script/rails
161
+ - test/test_app_3_1/test/test_helper.rb
162
+ - test/test_app_3_1/tmp/cache/4B5/180/experiments
163
+ - test/test_helper.rb
164
+ homepage: http://github.com/tusharr/audit_trail
165
+ licenses:
166
+ - MIT
167
+ post_install_message:
168
+ rdoc_options: []
169
+
170
+ require_paths:
171
+ - lib
172
+ required_ruby_version: !ruby/object:Gem::Requirement
173
+ none: false
174
+ requirements:
175
+ - - ">="
176
+ - !ruby/object:Gem::Version
177
+ hash: 3
178
+ segments:
179
+ - 0
180
+ version: "0"
181
+ required_rubygems_version: !ruby/object:Gem::Requirement
182
+ none: false
183
+ requirements:
184
+ - - ">="
185
+ - !ruby/object:Gem::Version
186
+ hash: 3
187
+ segments:
188
+ - 0
189
+ version: "0"
190
+ requirements: []
191
+
192
+ rubyforge_project:
193
+ rubygems_version: 1.8.12
194
+ signing_key:
195
+ specification_version: 3
196
+ summary: track changes to active record objects on an attribute level
197
+ test_files: []
198
+