traka 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 (62) hide show
  1. data/MIT-LICENSE +20 -0
  2. data/README.md +120 -0
  3. data/Rakefile +38 -0
  4. data/lib/generators/traka/install_generator.rb +17 -0
  5. data/lib/generators/traka/templates/public/system/api/version.txt +1 -0
  6. data/lib/tasks/traka_tasks.rake +4 -0
  7. data/lib/templates/active_record/model/model.rb +5 -0
  8. data/lib/traka/is_traka.rb +100 -0
  9. data/lib/traka/is_trakable.rb +49 -0
  10. data/lib/traka/version.rb +3 -0
  11. data/lib/traka.rb +12 -0
  12. data/test/dummy/README.rdoc +261 -0
  13. data/test/dummy/Rakefile +7 -0
  14. data/test/dummy/app/assets/javascripts/application.js +15 -0
  15. data/test/dummy/app/assets/stylesheets/application.css +13 -0
  16. data/test/dummy/app/controllers/application_controller.rb +3 -0
  17. data/test/dummy/app/helpers/application_helper.rb +2 -0
  18. data/test/dummy/app/models/cheese.rb +5 -0
  19. data/test/dummy/app/models/product.rb +5 -0
  20. data/test/dummy/app/models/traka_change.rb +5 -0
  21. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  22. data/test/dummy/config/application.rb +59 -0
  23. data/test/dummy/config/boot.rb +10 -0
  24. data/test/dummy/config/database.yml +25 -0
  25. data/test/dummy/config/environment.rb +5 -0
  26. data/test/dummy/config/environments/development.rb +37 -0
  27. data/test/dummy/config/environments/production.rb +67 -0
  28. data/test/dummy/config/environments/test.rb +37 -0
  29. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  30. data/test/dummy/config/initializers/inflections.rb +15 -0
  31. data/test/dummy/config/initializers/mime_types.rb +5 -0
  32. data/test/dummy/config/initializers/secret_token.rb +7 -0
  33. data/test/dummy/config/initializers/session_store.rb +8 -0
  34. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  35. data/test/dummy/config/locales/en.yml +5 -0
  36. data/test/dummy/config/routes.rb +58 -0
  37. data/test/dummy/config.ru +4 -0
  38. data/test/dummy/db/development.sqlite3 +0 -0
  39. data/test/dummy/db/migrate/20131219051328_create_products.rb +10 -0
  40. data/test/dummy/db/migrate/20131219051348_create_cheeses.rb +10 -0
  41. data/test/dummy/db/migrate/20131227113858_create_traka_changes.rb +12 -0
  42. data/test/dummy/db/schema.rb +39 -0
  43. data/test/dummy/db/test.sqlite3 +0 -0
  44. data/test/dummy/log/development.log +103 -0
  45. data/test/dummy/log/test.log +279368 -0
  46. data/test/dummy/public/404.html +26 -0
  47. data/test/dummy/public/422.html +26 -0
  48. data/test/dummy/public/500.html +25 -0
  49. data/test/dummy/public/favicon.ico +0 -0
  50. data/test/dummy/public/system/api/version.txt +1 -0
  51. data/test/dummy/script/rails +6 -0
  52. data/test/dummy/test/fixtures/cheeses.yml +9 -0
  53. data/test/dummy/test/fixtures/products.yml +9 -0
  54. data/test/dummy/test/fixtures/traka_changes.yml +13 -0
  55. data/test/dummy/test/unit/cheese_test.rb +7 -0
  56. data/test/dummy/test/unit/product_test.rb +7 -0
  57. data/test/dummy/test/unit/traka_change_test.rb +7 -0
  58. data/test/is_traka_test.rb +158 -0
  59. data/test/is_trakable_test.rb +94 -0
  60. data/test/test_helper.rb +15 -0
  61. data/test/traka_test.rb +9 -0
  62. metadata +189 -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,25 @@
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
+ </div>
24
+ </body>
25
+ </html>
File without changes
@@ -0,0 +1 @@
1
+ 1
@@ -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,9 @@
1
+ # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/Fixtures.html
2
+
3
+ one:
4
+ name: MyString
5
+ code: MyString
6
+
7
+ two:
8
+ name: MyString
9
+ code: MyString
@@ -0,0 +1,9 @@
1
+ # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/Fixtures.html
2
+
3
+ one:
4
+ name: MyString
5
+ uuid: MyString
6
+
7
+ two:
8
+ name: MyString
9
+ uuid: MyString
@@ -0,0 +1,13 @@
1
+ # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/Fixtures.html
2
+
3
+ one:
4
+ klass: MyString
5
+ uuid: MyString
6
+ action_type: MyString
7
+ version: 1
8
+
9
+ two:
10
+ klass: MyString
11
+ uuid: MyString
12
+ action_type: MyString
13
+ version: 1
@@ -0,0 +1,7 @@
1
+ require 'test_helper'
2
+
3
+ class CheeseTest < ActiveSupport::TestCase
4
+ # test "the truth" do
5
+ # assert true
6
+ # end
7
+ end
@@ -0,0 +1,7 @@
1
+ require 'test_helper'
2
+
3
+ class ProductTest < ActiveSupport::TestCase
4
+ # test "the truth" do
5
+ # assert true
6
+ # end
7
+ end
@@ -0,0 +1,7 @@
1
+ require 'test_helper'
2
+
3
+ class TrakaChangeTest < ActiveSupport::TestCase
4
+ # test "the truth" do
5
+ # assert true
6
+ # end
7
+ end
@@ -0,0 +1,158 @@
1
+ require 'test_helper'
2
+
3
+ class IsTrakaTest < ActiveSupport::TestCase
4
+
5
+ def setup
6
+ TrakaChange.destroy_all
7
+ TrakaChange.set_version!(1)
8
+ end
9
+
10
+ test "TrakaChange has latest version" do
11
+ assert_equal TrakaChange.latest_version, 1
12
+ end
13
+
14
+ test "TrakaChange can publish new version" do
15
+ assert_equal TrakaChange.latest_version, 1
16
+
17
+ TrakaChange.publish_new_version!
18
+
19
+ assert_equal TrakaChange.latest_version, 2
20
+ end
21
+
22
+ test "TrakaChange can list staged changes" do
23
+ p = Product.create(:name => "Product A")
24
+ c = Cheese.create(:name => "Cheese A")
25
+
26
+ assert_equal TrakaChange.staged_changes.count, 2
27
+ assert_equal TrakaChange.staged_changes.first.klass, "Product"
28
+ assert_equal TrakaChange.staged_changes.last.klass, "Cheese"
29
+ end
30
+
31
+ test "TrakaChange can list changes from a particular version" do
32
+ p = Product.create(:name => "Product A")
33
+ c = Cheese.create(:name => "Cheese A")
34
+
35
+ assert_equal TrakaChange.staged_changes.count, 2
36
+
37
+ TrakaChange.publish_new_version!
38
+
39
+ p2 = Product.create(:name => "Product B")
40
+
41
+ assert_equal TrakaChange.staged_changes.count, 1
42
+ assert_equal TrakaChange.staged_changes.first.klass, "Product"
43
+
44
+ assert_equal TrakaChange.changes_from(1).count, 3
45
+ assert_equal TrakaChange.changes_from(1).map(&:klass), ["Product", "Cheese", "Product"]
46
+ assert_equal TrakaChange.changes_from(1).map(&:action_type), ["create", "create", "create"]
47
+ end
48
+
49
+ test "TrakaChange can list differing changes" do
50
+ p = Product.create(:name => "Product A")
51
+ c = Cheese.create(:name => "Cheese A")
52
+
53
+ TrakaChange.publish_new_version!
54
+
55
+ p.name = "New name"
56
+ p.save
57
+ c.destroy
58
+
59
+ assert_equal TrakaChange.staged_changes.count, 2
60
+ assert_equal TrakaChange.staged_changes.map(&:klass), ["Product", "Cheese"]
61
+ assert_equal TrakaChange.staged_changes.map(&:action_type), ["update", "destroy"]
62
+ end
63
+
64
+ test "TrakaChange can filter out obsolete create->destroy actions" do
65
+ p = Product.create(:name => "Product A")
66
+ c = Cheese.create(:name => "Cheese A")
67
+
68
+ p.destroy
69
+
70
+ assert_equal TrakaChange.staged_changes.count, 1
71
+ assert_equal TrakaChange.staged_changes.map(&:klass), ["Cheese"]
72
+ assert_equal TrakaChange.staged_changes.map(&:action_type), ["create"]
73
+ end
74
+
75
+ test "TrakaChange can filter out obsolete update->destroy actions" do
76
+ p = Product.create(:name => "Product A")
77
+ c = Cheese.create(:name => "Cheese A")
78
+
79
+ TrakaChange.publish_new_version!
80
+
81
+ p.name = "New name"
82
+ p.save
83
+ c.name = "New name"
84
+ c.save
85
+
86
+ p.destroy
87
+
88
+ assert_equal TrakaChange.staged_changes.count, 1
89
+ assert_equal TrakaChange.staged_changes.map(&:klass), ["Cheese"]
90
+ assert_equal TrakaChange.staged_changes.map(&:action_type), ["update"]
91
+ end
92
+
93
+ test "TrakaChange can filter out obsolete create->update actions" do
94
+ p = Product.create(:name => "Product A")
95
+ c = Cheese.create(:name => "Cheese A")
96
+
97
+ p.name = "New name"
98
+ p.save
99
+
100
+ p.name = "Another name"
101
+ p.save
102
+
103
+ assert_equal TrakaChange.staged_changes.count, 2
104
+ assert_equal TrakaChange.staged_changes.map(&:klass), ["Product", "Cheese"]
105
+ assert_equal TrakaChange.staged_changes.map(&:action_type), ["create", "create"]
106
+ end
107
+
108
+ test "TrakaChange can filter out obsolete update->update actions" do
109
+ p = Product.create(:name => "Product A")
110
+ c = Cheese.create(:name => "Cheese A")
111
+
112
+ TrakaChange.publish_new_version!
113
+
114
+ p.name = "New name"
115
+ p.save
116
+
117
+ p.name = "Another name"
118
+ p.save
119
+
120
+ p.name = "And another name"
121
+ p.save
122
+
123
+ c.name = "New name"
124
+ c.save
125
+
126
+ assert_equal TrakaChange.staged_changes.count, 2
127
+ assert_equal TrakaChange.staged_changes.map(&:klass), ["Product", "Cheese"]
128
+ assert_equal TrakaChange.staged_changes.map(&:action_type), ["update", "update"]
129
+ end
130
+
131
+ test "TrakaChange can give unabridged list of changes" do
132
+ p = Product.create(:name => "Product A")
133
+ c = Cheese.create(:name => "Cheese A")
134
+
135
+ p.name = "New name"
136
+ p.save
137
+
138
+ p.name = "Another name"
139
+ p.save
140
+
141
+ p.destroy
142
+ c.destroy
143
+
144
+ # Abridged version would be empty because destroys would cancel out creates.
145
+ assert_equal TrakaChange.staged_changes(false).count, 6
146
+ assert_equal TrakaChange.staged_changes(false).map(&:klass), ["Product", "Cheese", "Product", "Product", "Product", "Cheese"]
147
+ assert_equal TrakaChange.staged_changes(false).map(&:action_type), ["create", "create", "update", "update", "destroy", "destroy"]
148
+ end
149
+
150
+ test "TrakaChange can resolve AR objects" do
151
+ p = Product.create(:name => "Product A")
152
+ c = Cheese.create(:name => "Cheese A")
153
+
154
+ assert_equal TrakaChange.staged_changes.first.get_record, p
155
+ assert_equal TrakaChange.staged_changes.last.get_record, c
156
+ end
157
+
158
+ end
@@ -0,0 +1,94 @@
1
+ require 'test_helper'
2
+
3
+ class IsTrakableTest < Test::Unit::TestCase
4
+
5
+ def setup
6
+ TrakaChange.destroy_all
7
+ TrakaChange.set_version!(1)
8
+ end
9
+
10
+ def test_a_products_traka_uuid_should_be_uuid
11
+ assert_equal "uuid", Product.traka_uuid
12
+ end
13
+
14
+ def test_a_cheeses_traka_uuid_should_be_code
15
+ assert_equal "code", Cheese.traka_uuid
16
+ end
17
+
18
+ def test_a_products_uuid_is_set_on_save
19
+ p = Product.new(:name => "Product A")
20
+ p.save
21
+
22
+ assert_not_nil p.uuid
23
+ assert_kind_of String, p.uuid
24
+ end
25
+
26
+ def test_a_cheeses_code_is_set_on_save
27
+ c = Cheese.new(:name => "Cheese A")
28
+ c.save
29
+
30
+ assert_not_nil c.code
31
+ assert_kind_of String, c.code
32
+ end
33
+
34
+ def test_a_product_should_record_changes_on_create
35
+ c = Product.new(:name => "Product B")
36
+ c.save
37
+ tc = TrakaChange.last
38
+
39
+ assert_equal tc.klass, "Product"
40
+ assert_equal tc.action_type, "create"
41
+ end
42
+
43
+ def test_a_product_should_record_changes_on_destroy
44
+ c = Product.new(:name => "Product B")
45
+ c.save
46
+ c.destroy
47
+ tc = TrakaChange.last
48
+
49
+ assert_equal tc.klass, "Product"
50
+ assert_equal tc.action_type, "destroy"
51
+ end
52
+
53
+ def test_a_product_should_record_changes_on_update
54
+ c = Product.new(:name => "Product B")
55
+ c.save
56
+ c.name = "New Name"
57
+ c.save
58
+ tc = TrakaChange.last
59
+
60
+ assert_equal tc.klass, "Product"
61
+ assert_equal tc.action_type, "update"
62
+ end
63
+
64
+ def test_a_cheese_should_record_changes_on_create
65
+ c = Cheese.new(:name => "Cheese B")
66
+ c.save
67
+ tc = TrakaChange.last
68
+
69
+ assert_equal tc.klass, "Cheese"
70
+ assert_equal tc.action_type, "create"
71
+ end
72
+
73
+ def test_a_cheese_should_record_changes_on_destroy
74
+ c = Cheese.new(:name => "Cheese B")
75
+ c.save
76
+ c.destroy
77
+ tc = TrakaChange.last
78
+
79
+ assert_equal tc.klass, "Cheese"
80
+ assert_equal tc.action_type, "destroy"
81
+ end
82
+
83
+ def test_a_cheese_should_record_changes_on_update
84
+ c = Cheese.new(:name => "Cheese B")
85
+ c.save
86
+ c.name = "New Name"
87
+ c.save
88
+ tc = TrakaChange.last
89
+
90
+ assert_equal tc.klass, "Cheese"
91
+ assert_equal tc.action_type, "update"
92
+ end
93
+
94
+ end
@@ -0,0 +1,15 @@
1
+ # Configure Rails Environment
2
+ ENV["RAILS_ENV"] = "test"
3
+
4
+ require File.expand_path("../dummy/config/environment.rb", __FILE__)
5
+ require "rails/test_help"
6
+
7
+ Rails.backtrace_cleaner.remove_silencers!
8
+
9
+ # Load support files
10
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
11
+
12
+ # Load fixtures from the engine
13
+ if ActiveSupport::TestCase.method_defined?(:fixture_path=)
14
+ ActiveSupport::TestCase.fixture_path = File.expand_path("../fixtures", __FILE__)
15
+ end
@@ -0,0 +1,9 @@
1
+ require 'test_helper'
2
+
3
+ class TrakaTest < ActiveSupport::TestCase
4
+
5
+ test "truth" do
6
+ assert true
7
+ end
8
+
9
+ end
metadata ADDED
@@ -0,0 +1,189 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: traka
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Andrew Buntine
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-12-30 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rails
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: 3.2.16
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: 3.2.16
30
+ - !ruby/object:Gem::Dependency
31
+ name: sqlite3
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ description: Rails 3+ plugin for simple tracking of changes to resources over time.
47
+ email:
48
+ - info@andrewbuntine.com
49
+ executables: []
50
+ extensions: []
51
+ extra_rdoc_files: []
52
+ files:
53
+ - lib/traka/is_trakable.rb
54
+ - lib/traka/version.rb
55
+ - lib/traka/is_traka.rb
56
+ - lib/generators/traka/install_generator.rb
57
+ - lib/generators/traka/templates/public/system/api/version.txt
58
+ - lib/tasks/traka_tasks.rake
59
+ - lib/traka.rb
60
+ - lib/templates/active_record/model/model.rb
61
+ - MIT-LICENSE
62
+ - Rakefile
63
+ - README.md
64
+ - test/test_helper.rb
65
+ - test/dummy/Rakefile
66
+ - test/dummy/log/test.log
67
+ - test/dummy/log/development.log
68
+ - test/dummy/config.ru
69
+ - test/dummy/public/404.html
70
+ - test/dummy/public/500.html
71
+ - test/dummy/public/422.html
72
+ - test/dummy/public/system/api/version.txt
73
+ - test/dummy/public/favicon.ico
74
+ - test/dummy/db/schema.rb
75
+ - test/dummy/db/development.sqlite3
76
+ - test/dummy/db/migrate/20131219051348_create_cheeses.rb
77
+ - test/dummy/db/migrate/20131219051328_create_products.rb
78
+ - test/dummy/db/migrate/20131227113858_create_traka_changes.rb
79
+ - test/dummy/db/test.sqlite3
80
+ - test/dummy/config/application.rb
81
+ - test/dummy/config/environments/production.rb
82
+ - test/dummy/config/environments/test.rb
83
+ - test/dummy/config/environments/development.rb
84
+ - test/dummy/config/locales/en.yml
85
+ - test/dummy/config/database.yml
86
+ - test/dummy/config/initializers/backtrace_silencers.rb
87
+ - test/dummy/config/initializers/wrap_parameters.rb
88
+ - test/dummy/config/initializers/inflections.rb
89
+ - test/dummy/config/initializers/secret_token.rb
90
+ - test/dummy/config/initializers/mime_types.rb
91
+ - test/dummy/config/initializers/session_store.rb
92
+ - test/dummy/config/routes.rb
93
+ - test/dummy/config/boot.rb
94
+ - test/dummy/config/environment.rb
95
+ - test/dummy/README.rdoc
96
+ - test/dummy/script/rails
97
+ - test/dummy/test/fixtures/traka_changes.yml
98
+ - test/dummy/test/fixtures/cheeses.yml
99
+ - test/dummy/test/fixtures/products.yml
100
+ - test/dummy/test/unit/product_test.rb
101
+ - test/dummy/test/unit/cheese_test.rb
102
+ - test/dummy/test/unit/traka_change_test.rb
103
+ - test/dummy/app/controllers/application_controller.rb
104
+ - test/dummy/app/assets/stylesheets/application.css
105
+ - test/dummy/app/assets/javascripts/application.js
106
+ - test/dummy/app/helpers/application_helper.rb
107
+ - test/dummy/app/views/layouts/application.html.erb
108
+ - test/dummy/app/models/product.rb
109
+ - test/dummy/app/models/traka_change.rb
110
+ - test/dummy/app/models/cheese.rb
111
+ - test/traka_test.rb
112
+ - test/is_traka_test.rb
113
+ - test/is_trakable_test.rb
114
+ homepage: http://github.com/buntine/traka
115
+ licenses:
116
+ - MIT
117
+ post_install_message:
118
+ rdoc_options: []
119
+ require_paths:
120
+ - lib
121
+ required_ruby_version: !ruby/object:Gem::Requirement
122
+ none: false
123
+ requirements:
124
+ - - ! '>='
125
+ - !ruby/object:Gem::Version
126
+ version: '0'
127
+ required_rubygems_version: !ruby/object:Gem::Requirement
128
+ none: false
129
+ requirements:
130
+ - - ! '>='
131
+ - !ruby/object:Gem::Version
132
+ version: '0'
133
+ requirements: []
134
+ rubyforge_project:
135
+ rubygems_version: 1.8.24
136
+ signing_key:
137
+ specification_version: 3
138
+ summary: Rails 3+ plugin for simple tracking of changes to resources over time.
139
+ test_files:
140
+ - test/test_helper.rb
141
+ - test/dummy/Rakefile
142
+ - test/dummy/log/test.log
143
+ - test/dummy/log/development.log
144
+ - test/dummy/config.ru
145
+ - test/dummy/public/404.html
146
+ - test/dummy/public/500.html
147
+ - test/dummy/public/422.html
148
+ - test/dummy/public/system/api/version.txt
149
+ - test/dummy/public/favicon.ico
150
+ - test/dummy/db/schema.rb
151
+ - test/dummy/db/development.sqlite3
152
+ - test/dummy/db/migrate/20131219051348_create_cheeses.rb
153
+ - test/dummy/db/migrate/20131219051328_create_products.rb
154
+ - test/dummy/db/migrate/20131227113858_create_traka_changes.rb
155
+ - test/dummy/db/test.sqlite3
156
+ - test/dummy/config/application.rb
157
+ - test/dummy/config/environments/production.rb
158
+ - test/dummy/config/environments/test.rb
159
+ - test/dummy/config/environments/development.rb
160
+ - test/dummy/config/locales/en.yml
161
+ - test/dummy/config/database.yml
162
+ - test/dummy/config/initializers/backtrace_silencers.rb
163
+ - test/dummy/config/initializers/wrap_parameters.rb
164
+ - test/dummy/config/initializers/inflections.rb
165
+ - test/dummy/config/initializers/secret_token.rb
166
+ - test/dummy/config/initializers/mime_types.rb
167
+ - test/dummy/config/initializers/session_store.rb
168
+ - test/dummy/config/routes.rb
169
+ - test/dummy/config/boot.rb
170
+ - test/dummy/config/environment.rb
171
+ - test/dummy/README.rdoc
172
+ - test/dummy/script/rails
173
+ - test/dummy/test/fixtures/traka_changes.yml
174
+ - test/dummy/test/fixtures/cheeses.yml
175
+ - test/dummy/test/fixtures/products.yml
176
+ - test/dummy/test/unit/product_test.rb
177
+ - test/dummy/test/unit/cheese_test.rb
178
+ - test/dummy/test/unit/traka_change_test.rb
179
+ - test/dummy/app/controllers/application_controller.rb
180
+ - test/dummy/app/assets/stylesheets/application.css
181
+ - test/dummy/app/assets/javascripts/application.js
182
+ - test/dummy/app/helpers/application_helper.rb
183
+ - test/dummy/app/views/layouts/application.html.erb
184
+ - test/dummy/app/models/product.rb
185
+ - test/dummy/app/models/traka_change.rb
186
+ - test/dummy/app/models/cheese.rb
187
+ - test/traka_test.rb
188
+ - test/is_traka_test.rb
189
+ - test/is_trakable_test.rb