paper_trail 3.0.6 → 4.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (119) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +5 -0
  3. data/.rspec +1 -2
  4. data/.travis.yml +14 -5
  5. data/CHANGELOG.md +215 -8
  6. data/CONTRIBUTING.md +84 -0
  7. data/README.md +922 -502
  8. data/Rakefile +2 -2
  9. data/doc/bug_report_template.rb +65 -0
  10. data/gemfiles/ar3.gemfile +61 -0
  11. data/lib/generators/paper_trail/install_generator.rb +22 -3
  12. data/lib/generators/paper_trail/templates/add_object_changes_to_versions.rb +6 -1
  13. data/lib/generators/paper_trail/templates/add_transaction_id_column_to_versions.rb +11 -0
  14. data/lib/generators/paper_trail/templates/create_version_associations.rb +17 -0
  15. data/lib/generators/paper_trail/templates/create_versions.rb +22 -1
  16. data/lib/paper_trail.rb +52 -22
  17. data/lib/paper_trail/attributes_serialization.rb +89 -0
  18. data/lib/paper_trail/cleaner.rb +32 -15
  19. data/lib/paper_trail/config.rb +35 -2
  20. data/lib/paper_trail/frameworks/active_record.rb +4 -5
  21. data/lib/paper_trail/frameworks/active_record/models/paper_trail/version_association.rb +7 -0
  22. data/lib/paper_trail/frameworks/rails.rb +1 -0
  23. data/lib/paper_trail/frameworks/rails/controller.rb +27 -11
  24. data/lib/paper_trail/frameworks/rspec.rb +5 -0
  25. data/lib/paper_trail/frameworks/sinatra.rb +3 -1
  26. data/lib/paper_trail/has_paper_trail.rb +304 -148
  27. data/lib/paper_trail/record_history.rb +59 -0
  28. data/lib/paper_trail/reifier.rb +270 -0
  29. data/lib/paper_trail/serializers/json.rb +13 -2
  30. data/lib/paper_trail/serializers/yaml.rb +16 -2
  31. data/lib/paper_trail/version_association_concern.rb +15 -0
  32. data/lib/paper_trail/version_concern.rb +160 -122
  33. data/lib/paper_trail/version_number.rb +3 -3
  34. data/paper_trail.gemspec +22 -9
  35. data/spec/generators/install_generator_spec.rb +4 -4
  36. data/spec/models/animal_spec.rb +36 -0
  37. data/spec/models/boolit_spec.rb +48 -0
  38. data/spec/models/callback_modifier_spec.rb +96 -0
  39. data/spec/models/fluxor_spec.rb +19 -0
  40. data/spec/models/gadget_spec.rb +14 -12
  41. data/spec/models/joined_version_spec.rb +9 -9
  42. data/spec/models/json_version_spec.rb +103 -0
  43. data/spec/models/kitchen/banana_spec.rb +14 -0
  44. data/spec/models/not_on_update_spec.rb +19 -0
  45. data/spec/models/post_with_status_spec.rb +3 -3
  46. data/spec/models/skipper_spec.rb +46 -0
  47. data/spec/models/thing_spec.rb +11 -0
  48. data/spec/models/version_spec.rb +195 -44
  49. data/spec/models/widget_spec.rb +136 -76
  50. data/spec/modules/paper_trail_spec.rb +27 -0
  51. data/spec/modules/version_concern_spec.rb +8 -8
  52. data/spec/modules/version_number_spec.rb +16 -16
  53. data/spec/paper_trail/config_spec.rb +52 -0
  54. data/spec/paper_trail_spec.rb +17 -17
  55. data/spec/rails_helper.rb +34 -0
  56. data/spec/requests/articles_spec.rb +10 -14
  57. data/spec/spec_helper.rb +81 -34
  58. data/spec/support/alt_db_init.rb +1 -1
  59. data/test/dummy/app/controllers/application_controller.rb +1 -1
  60. data/test/dummy/app/controllers/articles_controller.rb +4 -1
  61. data/test/dummy/app/models/animal.rb +2 -0
  62. data/test/dummy/app/models/book.rb +4 -0
  63. data/test/dummy/app/models/boolit.rb +4 -0
  64. data/test/dummy/app/models/callback_modifier.rb +45 -0
  65. data/test/dummy/app/models/chapter.rb +9 -0
  66. data/test/dummy/app/models/citation.rb +5 -0
  67. data/test/dummy/app/models/customer.rb +4 -0
  68. data/test/dummy/app/models/editor.rb +4 -0
  69. data/test/dummy/app/models/editorship.rb +5 -0
  70. data/test/dummy/app/models/fruit.rb +5 -0
  71. data/test/dummy/app/models/kitchen/banana.rb +5 -0
  72. data/test/dummy/app/models/line_item.rb +4 -0
  73. data/test/dummy/app/models/not_on_update.rb +4 -0
  74. data/test/dummy/app/models/order.rb +5 -0
  75. data/test/dummy/app/models/paragraph.rb +5 -0
  76. data/test/dummy/app/models/person.rb +13 -3
  77. data/test/dummy/app/models/post.rb +0 -1
  78. data/test/dummy/app/models/quotation.rb +5 -0
  79. data/test/dummy/app/models/section.rb +6 -0
  80. data/test/dummy/app/models/skipper.rb +6 -0
  81. data/test/dummy/app/models/song.rb +20 -0
  82. data/test/dummy/app/models/thing.rb +3 -0
  83. data/test/dummy/app/models/whatchamajigger.rb +4 -0
  84. data/test/dummy/app/models/widget.rb +5 -0
  85. data/test/dummy/app/versions/json_version.rb +3 -0
  86. data/test/dummy/app/versions/kitchen/banana_version.rb +5 -0
  87. data/test/dummy/config/application.rb +6 -0
  88. data/test/dummy/config/database.postgres.yml +1 -1
  89. data/test/dummy/config/environments/test.rb +5 -1
  90. data/test/dummy/config/initializers/paper_trail.rb +6 -1
  91. data/test/dummy/db/migrate/20110208155312_set_up_test_tables.rb +143 -3
  92. data/test/dummy/db/schema.rb +169 -25
  93. data/test/functional/controller_test.rb +4 -2
  94. data/test/functional/modular_sinatra_test.rb +1 -1
  95. data/test/functional/sinatra_test.rb +1 -1
  96. data/test/paper_trail_test.rb +7 -0
  97. data/test/test_helper.rb +38 -2
  98. data/test/time_travel_helper.rb +15 -0
  99. data/test/unit/associations_test.rb +726 -0
  100. data/test/unit/inheritance_column_test.rb +6 -6
  101. data/test/unit/model_test.rb +109 -125
  102. data/test/unit/protected_attrs_test.rb +4 -3
  103. data/test/unit/serializer_test.rb +6 -6
  104. data/test/unit/serializers/json_test.rb +17 -4
  105. data/test/unit/serializers/yaml_test.rb +5 -1
  106. data/test/unit/version_test.rb +87 -69
  107. metadata +172 -75
  108. data/gemfiles/3.0.gemfile +0 -42
  109. data/test/dummy/public/404.html +0 -26
  110. data/test/dummy/public/422.html +0 -26
  111. data/test/dummy/public/500.html +0 -26
  112. data/test/dummy/public/favicon.ico +0 -0
  113. data/test/dummy/public/javascripts/application.js +0 -2
  114. data/test/dummy/public/javascripts/controls.js +0 -965
  115. data/test/dummy/public/javascripts/dragdrop.js +0 -974
  116. data/test/dummy/public/javascripts/effects.js +0 -1123
  117. data/test/dummy/public/javascripts/prototype.js +0 -6001
  118. data/test/dummy/public/javascripts/rails.js +0 -175
  119. data/test/dummy/public/stylesheets/.gitkeep +0 -0
@@ -10,7 +10,7 @@ class SerializerTest < ActiveSupport::TestCase
10
10
  END
11
11
 
12
12
  @fluxor = Fluxor.create :name => 'Some text.'
13
- @original_fluxor_attributes = @fluxor.send(:item_before_change).attributes # this is exactly what PaperTrail serializes
13
+ @original_fluxor_attributes = @fluxor.send(:attributes_before_change) # this is exactly what PaperTrail serializes
14
14
  @fluxor.update_attributes :name => 'Some more text.'
15
15
  end
16
16
 
@@ -24,7 +24,7 @@ class SerializerTest < ActiveSupport::TestCase
24
24
  assert_equal @original_fluxor_attributes, YAML.load(@fluxor.versions[1].object)
25
25
  # This test can't consistently pass in Ruby1.8 because hashes do no preserve order, which means the order of the
26
26
  # attributes in the `YAML` can't be ensured.
27
- if RUBY_VERSION.to_f >= 1.9
27
+ if RUBY_VERSION >= '1.9'
28
28
  assert_equal YAML.dump(@original_fluxor_attributes), @fluxor.versions[1].object
29
29
  end
30
30
  end
@@ -41,7 +41,7 @@ class SerializerTest < ActiveSupport::TestCase
41
41
  END
42
42
 
43
43
  @fluxor = Fluxor.create :name => 'Some text.'
44
- @original_fluxor_attributes = @fluxor.send(:item_before_change).attributes # this is exactly what PaperTrail serializes
44
+ @original_fluxor_attributes = @fluxor.send(:attributes_before_change) # this is exactly what PaperTrail serializes
45
45
  @fluxor.update_attributes :name => 'Some more text.'
46
46
  end
47
47
 
@@ -59,7 +59,7 @@ class SerializerTest < ActiveSupport::TestCase
59
59
  assert_equal @original_fluxor_attributes, ActiveSupport::JSON.decode(@fluxor.versions[1].object)
60
60
  # This test can't consistently pass in Ruby1.8 because hashes do no preserve order, which means the order of the
61
61
  # attributes in the JSON can't be ensured.
62
- if RUBY_VERSION.to_f >= 1.9
62
+ if RUBY_VERSION >= '1.9'
63
63
  assert_equal ActiveSupport::JSON.encode(@original_fluxor_attributes), @fluxor.versions[1].object
64
64
  end
65
65
  end
@@ -83,7 +83,7 @@ class SerializerTest < ActiveSupport::TestCase
83
83
  END
84
84
 
85
85
  @fluxor = Fluxor.create
86
- @original_fluxor_attributes = @fluxor.send(:item_before_change).attributes.reject { |k,v| v.nil? } # this is exactly what PaperTrail serializes
86
+ @original_fluxor_attributes = @fluxor.send(:attributes_before_change).reject { |k,v| v.nil? } # this is exactly what PaperTrail serializes
87
87
  @fluxor.update_attributes :name => 'Some more text.'
88
88
  end
89
89
 
@@ -101,7 +101,7 @@ class SerializerTest < ActiveSupport::TestCase
101
101
  assert_equal @original_fluxor_attributes, ActiveSupport::JSON.decode(@fluxor.versions[1].object)
102
102
  # This test can't consistently pass in Ruby1.8 because hashes do no preserve order, which means the order of the
103
103
  # attributes in the JSON can't be ensured.
104
- if RUBY_VERSION.to_f >= 1.9
104
+ if RUBY_VERSION >= '1.9'
105
105
  assert_equal ActiveSupport::JSON.encode(@original_fluxor_attributes), @fluxor.versions[1].object
106
106
  end
107
107
  end
@@ -44,7 +44,11 @@ class JSONTest < ActiveSupport::TestCase
44
44
  PaperTrail::Version.arel_table[:object], :arg1, "Val 1")
45
45
 
46
46
  assert matches.instance_of?(Arel::Nodes::Matches)
47
- assert_equal matches.right, "%\"arg1\":\"Val 1\"%"
47
+ if Arel::VERSION >= '6'
48
+ assert_equal matches.right.val, "%\"arg1\":\"Val 1\"%"
49
+ else
50
+ assert_equal matches.right, "%\"arg1\":\"Val 1\"%"
51
+ end
48
52
  end
49
53
  end
50
54
 
@@ -54,7 +58,11 @@ class JSONTest < ActiveSupport::TestCase
54
58
  PaperTrail::Version.arel_table[:object], :arg1, nil)
55
59
 
56
60
  assert matches.instance_of?(Arel::Nodes::Matches)
57
- assert_equal matches.right, "%\"arg1\":null%"
61
+ if Arel::VERSION >= '6'
62
+ assert_equal matches.right.val, "%\"arg1\":null%"
63
+ else
64
+ assert_equal matches.right, "%\"arg1\":null%"
65
+ end
58
66
  end
59
67
  end
60
68
 
@@ -67,8 +75,13 @@ class JSONTest < ActiveSupport::TestCase
67
75
  matches = grouping.select { |v| v.instance_of?(Arel::Nodes::Matches) }
68
76
  # Numeric arguments need to ensure that they match for only the number, not the beginning
69
77
  # of a #, so it uses an Grouping matcher (See notes on `PaperTrail::Serializers::JSON`)
70
- assert_equal matches.first.right, "%\"arg1\":-3.5,%"
71
- assert_equal matches.last.right, "%\"arg1\":-3.5}%"
78
+ if Arel::VERSION >= '6'
79
+ assert_equal matches.first.right.val, "%\"arg1\":-3.5,%"
80
+ assert_equal matches.last.right.val, "%\"arg1\":-3.5}%"
81
+ else
82
+ assert_equal matches.first.right, "%\"arg1\":-3.5,%"
83
+ assert_equal matches.last.right, "%\"arg1\":-3.5}%"
84
+ end
72
85
  end
73
86
  end
74
87
  end
@@ -42,7 +42,11 @@ class YamlTest < ActiveSupport::TestCase
42
42
  matches = PaperTrail::Serializers::YAML.where_object_condition(
43
43
  PaperTrail::Version.arel_table[:object], :arg1, "Val 1")
44
44
  assert matches.instance_of?(Arel::Nodes::Matches)
45
- assert_equal matches.right, "%\narg1: Val 1\n%"
45
+ if Arel::VERSION >= '6'
46
+ assert_equal matches.right.val, "%\narg1: Val 1\n%"
47
+ else
48
+ assert_equal matches.right, "%\narg1: Val 1\n%"
49
+ end
46
50
  end
47
51
  end
48
52
  end
@@ -1,100 +1,118 @@
1
1
  require 'test_helper'
2
2
 
3
- class PaperTrail::VersionTest < ActiveSupport::TestCase
4
- setup do
5
- change_schema
6
- @animal = Animal.create
7
- assert PaperTrail::Version.creates.present?
8
- end
3
+ module PaperTrail
4
+ class VersionTest < ActiveSupport::TestCase
5
+ setup do
6
+ change_schema
7
+ @animal = Animal.create
8
+ assert Version.creates.present?
9
+ end
9
10
 
10
- teardown do
11
- restore_schema
12
- Animal.connection.schema_cache.clear!
13
- Animal.reset_column_information
14
- end
11
+ teardown do
12
+ restore_schema
13
+ Animal.connection.schema_cache.clear!
14
+ Animal.reset_column_information
15
+ end
15
16
 
16
- context "PaperTrail::Version.creates" do
17
- should "return only create events" do
18
- PaperTrail::Version.creates.each do |version|
19
- assert_equal "create", version.event
17
+ context ".creates" do
18
+ should "return only create events" do
19
+ Version.creates.each do |version|
20
+ assert_equal "create", version.event
21
+ end
20
22
  end
21
23
  end
22
- end
23
24
 
24
- context "PaperTrail::Version.updates" do
25
- setup {
26
- @animal.update_attributes(:name => 'Animal')
27
- assert PaperTrail::Version.updates.present?
28
- }
25
+ context ".updates" do
26
+ setup {
27
+ @animal.update_attributes(:name => 'Animal')
28
+ assert Version.updates.present?
29
+ }
29
30
 
30
- should "return only update events" do
31
- PaperTrail::Version.updates.each do |version|
32
- assert_equal "update", version.event
31
+ should "return only update events" do
32
+ Version.updates.each do |version|
33
+ assert_equal "update", version.event
34
+ end
33
35
  end
34
36
  end
35
- end
36
37
 
37
- context "PaperTrail::Version.destroys" do
38
- setup {
39
- @animal.destroy
40
- assert PaperTrail::Version.destroys.present?
41
- }
38
+ context ".destroys" do
39
+ setup {
40
+ @animal.destroy
41
+ assert Version.destroys.present?
42
+ }
42
43
 
43
- should "return only destroy events" do
44
- PaperTrail::Version.destroys.each do |version|
45
- assert_equal "destroy", version.event
44
+ should "return only destroy events" do
45
+ Version.destroys.each do |version|
46
+ assert_equal "destroy", version.event
47
+ end
46
48
  end
47
49
  end
48
- end
49
50
 
50
- context "PaperTrail::Version.not_creates" do
51
- setup {
52
- @animal.update_attributes(:name => 'Animal')
53
- @animal.destroy
54
- assert PaperTrail::Version.not_creates.present?
55
- }
51
+ context ".not_creates" do
52
+ setup {
53
+ @animal.update_attributes(:name => 'Animal')
54
+ @animal.destroy
55
+ assert Version.not_creates.present?
56
+ }
56
57
 
57
- should "return all versions except create events" do
58
- PaperTrail::Version.not_creates.each do |version|
59
- assert_not_equal "create", version.event
58
+ should "return all versions except create events" do
59
+ Version.not_creates.each do |version|
60
+ assert_not_equal "create", version.event
61
+ end
60
62
  end
61
63
  end
62
- end
63
64
 
64
- context "PaperTrail::Version.subsequent" do
65
- setup { 2.times { @animal.update_attributes(:name => Faker::Lorem.word) } }
65
+ context ".subsequent" do
66
+ setup do
67
+ 2.times do
68
+ @animal.update_attributes(:name => Faker::Lorem.word)
69
+ end
70
+ end
66
71
 
67
- context "receiving a TimeStamp" do
68
- should "return all versions that were created before the Timestamp" do
69
- value = PaperTrail::Version.subsequent(1.hour.ago, true)
70
- assert_equal value, @animal.versions.to_a
71
- assert_not_nil value.to_sql.match(/ORDER BY #{PaperTrail::Version.arel_table[:created_at].asc.to_sql}/)
72
+ context "given a timestamp" do
73
+ should "return all versions that were created after the timestamp" do
74
+ value = Version.subsequent(1.hour.ago, true)
75
+ assert_equal @animal.versions.to_a, value
76
+ assert_match(
77
+ /ORDER BY #{Version.arel_table[:created_at].asc.to_sql}/,
78
+ value.to_sql
79
+ )
80
+ end
72
81
  end
73
- end
74
82
 
75
- context "receiving a `PaperTrail::Version`" do
76
- should "grab the Timestamp from the version and use that as the value" do
77
- value = PaperTrail::Version.subsequent(@animal.versions.first)
78
- assert_equal value, @animal.versions.to_a.tap { |assoc| assoc.shift }
83
+ context "given a Version" do
84
+ should "grab the timestamp from the version and use that as the value" do
85
+ expected = @animal.versions.to_a.tap { |assoc| assoc.shift }
86
+ actual = Version.subsequent(@animal.versions.first)
87
+ assert_equal expected, actual
88
+ end
79
89
  end
80
90
  end
81
- end
82
91
 
83
- context "PaperTrail::Version.preceding" do
84
- setup { 2.times { @animal.update_attributes(:name => Faker::Lorem.word) } }
92
+ context ".preceding" do
93
+ setup do
94
+ 2.times do
95
+ @animal.update_attributes(:name => Faker::Lorem.word)
96
+ end
97
+ end
85
98
 
86
- context "receiving a TimeStamp" do
87
- should "return all versions that were created before the Timestamp" do
88
- value = PaperTrail::Version.preceding(5.seconds.from_now, true)
89
- assert_equal value, @animal.versions.reverse
90
- assert_not_nil value.to_sql.match(/ORDER BY #{PaperTrail::Version.arel_table[:created_at].desc.to_sql}/)
99
+ context "given a timestamp" do
100
+ should "return all versions that were created before the timestamp" do
101
+ value = Version.preceding(5.seconds.from_now, true)
102
+ assert_equal @animal.versions.reverse, value
103
+ assert_match(
104
+ /ORDER BY #{Version.arel_table[:created_at].desc.to_sql}/,
105
+ value.to_sql
106
+ )
107
+ end
91
108
  end
92
- end
93
109
 
94
- context "receiving a `PaperTrail::Version`" do
95
- should "grab the Timestamp from the version and use that as the value" do
96
- value = PaperTrail::Version.preceding(@animal.versions.last)
97
- assert_equal value, @animal.versions.to_a.tap { |assoc| assoc.pop }.reverse
110
+ context "given a Version" do
111
+ should "grab the timestamp from the version and use that as the value" do
112
+ expected = @animal.versions.to_a.tap { |assoc| assoc.pop }.reverse
113
+ actual = Version.preceding(@animal.versions.last)
114
+ assert_equal expected, actual
115
+ end
98
116
  end
99
117
  end
100
118
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: paper_trail
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.6
4
+ version: 4.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andy Stewart
@@ -9,220 +9,262 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-10-09 00:00:00.000000000 Z
12
+ date: 2016-06-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activerecord
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - '>='
18
+ - - ">="
19
19
  - !ruby/object:Gem::Version
20
20
  version: '3.0'
21
- - - <
21
+ - - "<"
22
22
  - !ruby/object:Gem::Version
23
- version: '5.0'
23
+ version: '6.0'
24
24
  type: :runtime
25
25
  prerelease: false
26
26
  version_requirements: !ruby/object:Gem::Requirement
27
27
  requirements:
28
- - - '>='
28
+ - - ">="
29
29
  - !ruby/object:Gem::Version
30
30
  version: '3.0'
31
- - - <
31
+ - - "<"
32
32
  - !ruby/object:Gem::Version
33
- version: '5.0'
33
+ version: '6.0'
34
34
  - !ruby/object:Gem::Dependency
35
35
  name: activesupport
36
36
  requirement: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '3.0'
41
- - - <
41
+ - - "<"
42
42
  - !ruby/object:Gem::Version
43
- version: '5.0'
43
+ version: '6.0'
44
44
  type: :runtime
45
45
  prerelease: false
46
46
  version_requirements: !ruby/object:Gem::Requirement
47
47
  requirements:
48
- - - '>='
48
+ - - ">="
49
49
  - !ruby/object:Gem::Version
50
50
  version: '3.0'
51
- - - <
51
+ - - "<"
52
52
  - !ruby/object:Gem::Version
53
- version: '5.0'
53
+ version: '6.0'
54
+ - !ruby/object:Gem::Dependency
55
+ name: request_store
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '1.1'
61
+ type: :runtime
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '1.1'
54
68
  - !ruby/object:Gem::Dependency
55
69
  name: rake
56
70
  requirement: !ruby/object:Gem::Requirement
57
71
  requirements:
58
- - - ~>
72
+ - - "~>"
59
73
  - !ruby/object:Gem::Version
60
74
  version: 10.1.1
61
75
  type: :development
62
76
  prerelease: false
63
77
  version_requirements: !ruby/object:Gem::Requirement
64
78
  requirements:
65
- - - ~>
79
+ - - "~>"
66
80
  - !ruby/object:Gem::Version
67
81
  version: 10.1.1
68
82
  - !ruby/object:Gem::Dependency
69
83
  name: shoulda
70
84
  requirement: !ruby/object:Gem::Requirement
71
85
  requirements:
72
- - - ~>
86
+ - - "~>"
73
87
  - !ruby/object:Gem::Version
74
88
  version: '3.5'
75
89
  type: :development
76
90
  prerelease: false
77
91
  version_requirements: !ruby/object:Gem::Requirement
78
92
  requirements:
79
- - - ~>
93
+ - - "~>"
80
94
  - !ruby/object:Gem::Version
81
95
  version: '3.5'
82
96
  - !ruby/object:Gem::Dependency
83
97
  name: ffaker
84
98
  requirement: !ruby/object:Gem::Requirement
85
99
  requirements:
86
- - - '>='
100
+ - - "<="
87
101
  - !ruby/object:Gem::Version
88
- version: '1.15'
102
+ version: 1.31.0
89
103
  type: :development
90
104
  prerelease: false
91
105
  version_requirements: !ruby/object:Gem::Requirement
92
106
  requirements:
93
- - - '>='
107
+ - - "<="
94
108
  - !ruby/object:Gem::Version
95
- version: '1.15'
109
+ version: 1.31.0
96
110
  - !ruby/object:Gem::Dependency
97
111
  name: railties
98
112
  requirement: !ruby/object:Gem::Requirement
99
113
  requirements:
100
- - - '>='
114
+ - - ">="
101
115
  - !ruby/object:Gem::Version
102
116
  version: '3.0'
103
- - - <
117
+ - - "<"
104
118
  - !ruby/object:Gem::Version
105
119
  version: '5.0'
106
120
  type: :development
107
121
  prerelease: false
108
122
  version_requirements: !ruby/object:Gem::Requirement
109
123
  requirements:
110
- - - '>='
124
+ - - ">="
111
125
  - !ruby/object:Gem::Version
112
126
  version: '3.0'
113
- - - <
127
+ - - "<"
114
128
  - !ruby/object:Gem::Version
115
129
  version: '5.0'
116
130
  - !ruby/object:Gem::Dependency
117
131
  name: sinatra
118
132
  requirement: !ruby/object:Gem::Requirement
119
133
  requirements:
120
- - - ~>
134
+ - - "~>"
121
135
  - !ruby/object:Gem::Version
122
136
  version: '1.0'
123
137
  type: :development
124
138
  prerelease: false
125
139
  version_requirements: !ruby/object:Gem::Requirement
126
140
  requirements:
127
- - - ~>
141
+ - - "~>"
128
142
  - !ruby/object:Gem::Version
129
143
  version: '1.0'
130
144
  - !ruby/object:Gem::Dependency
131
145
  name: rack-test
132
146
  requirement: !ruby/object:Gem::Requirement
133
147
  requirements:
134
- - - '>='
148
+ - - ">="
135
149
  - !ruby/object:Gem::Version
136
150
  version: '0.6'
137
151
  type: :development
138
152
  prerelease: false
139
153
  version_requirements: !ruby/object:Gem::Requirement
140
154
  requirements:
141
- - - '>='
155
+ - - ">="
142
156
  - !ruby/object:Gem::Version
143
157
  version: '0.6'
144
158
  - !ruby/object:Gem::Dependency
145
159
  name: rspec-rails
146
160
  requirement: !ruby/object:Gem::Requirement
147
161
  requirements:
148
- - - ~>
162
+ - - "~>"
149
163
  - !ruby/object:Gem::Version
150
- version: '2.14'
164
+ version: 3.1.0
151
165
  type: :development
152
166
  prerelease: false
153
167
  version_requirements: !ruby/object:Gem::Requirement
154
168
  requirements:
155
- - - ~>
169
+ - - "~>"
156
170
  - !ruby/object:Gem::Version
157
- version: '2.14'
171
+ version: 3.1.0
158
172
  - !ruby/object:Gem::Dependency
159
173
  name: generator_spec
160
174
  requirement: !ruby/object:Gem::Requirement
161
175
  requirements:
162
- - - '>='
176
+ - - ">="
163
177
  - !ruby/object:Gem::Version
164
178
  version: '0'
165
179
  type: :development
166
180
  prerelease: false
167
181
  version_requirements: !ruby/object:Gem::Requirement
168
182
  requirements:
169
- - - '>='
183
+ - - ">="
170
184
  - !ruby/object:Gem::Version
171
185
  version: '0'
172
186
  - !ruby/object:Gem::Dependency
173
187
  name: database_cleaner
174
188
  requirement: !ruby/object:Gem::Requirement
175
189
  requirements:
176
- - - ~>
190
+ - - "~>"
177
191
  - !ruby/object:Gem::Version
178
192
  version: '1.2'
179
193
  type: :development
180
194
  prerelease: false
181
195
  version_requirements: !ruby/object:Gem::Requirement
182
196
  requirements:
183
- - - ~>
197
+ - - "~>"
184
198
  - !ruby/object:Gem::Version
185
199
  version: '1.2'
200
+ - !ruby/object:Gem::Dependency
201
+ name: pry-nav
202
+ requirement: !ruby/object:Gem::Requirement
203
+ requirements:
204
+ - - ">="
205
+ - !ruby/object:Gem::Version
206
+ version: '0'
207
+ type: :development
208
+ prerelease: false
209
+ version_requirements: !ruby/object:Gem::Requirement
210
+ requirements:
211
+ - - ">="
212
+ - !ruby/object:Gem::Version
213
+ version: '0'
214
+ - !ruby/object:Gem::Dependency
215
+ name: timecop
216
+ requirement: !ruby/object:Gem::Requirement
217
+ requirements:
218
+ - - ">="
219
+ - !ruby/object:Gem::Version
220
+ version: '0'
221
+ type: :development
222
+ prerelease: false
223
+ version_requirements: !ruby/object:Gem::Requirement
224
+ requirements:
225
+ - - ">="
226
+ - !ruby/object:Gem::Version
227
+ version: '0'
186
228
  - !ruby/object:Gem::Dependency
187
229
  name: sqlite3
188
230
  requirement: !ruby/object:Gem::Requirement
189
231
  requirements:
190
- - - ~>
232
+ - - "~>"
191
233
  - !ruby/object:Gem::Version
192
234
  version: '1.2'
193
235
  type: :development
194
236
  prerelease: false
195
237
  version_requirements: !ruby/object:Gem::Requirement
196
238
  requirements:
197
- - - ~>
239
+ - - "~>"
198
240
  - !ruby/object:Gem::Version
199
241
  version: '1.2'
200
242
  - !ruby/object:Gem::Dependency
201
243
  name: mysql2
202
244
  requirement: !ruby/object:Gem::Requirement
203
245
  requirements:
204
- - - ~>
246
+ - - "~>"
205
247
  - !ruby/object:Gem::Version
206
- version: '0.3'
248
+ version: 0.3.20
207
249
  type: :development
208
250
  prerelease: false
209
251
  version_requirements: !ruby/object:Gem::Requirement
210
252
  requirements:
211
- - - ~>
253
+ - - "~>"
212
254
  - !ruby/object:Gem::Version
213
- version: '0.3'
255
+ version: 0.3.20
214
256
  - !ruby/object:Gem::Dependency
215
257
  name: pg
216
258
  requirement: !ruby/object:Gem::Requirement
217
259
  requirements:
218
- - - ~>
260
+ - - "~>"
219
261
  - !ruby/object:Gem::Version
220
262
  version: '0.17'
221
263
  type: :development
222
264
  prerelease: false
223
265
  version_requirements: !ruby/object:Gem::Requirement
224
266
  requirements:
225
- - - ~>
267
+ - - "~>"
226
268
  - !ruby/object:Gem::Version
227
269
  version: '0.17'
228
270
  description: Track changes to your models' data. Good for auditing or versioning.
@@ -231,24 +273,30 @@ executables: []
231
273
  extensions: []
232
274
  extra_rdoc_files: []
233
275
  files:
234
- - .gitignore
235
- - .rspec
236
- - .travis.yml
276
+ - ".gitignore"
277
+ - ".rspec"
278
+ - ".travis.yml"
237
279
  - CHANGELOG.md
280
+ - CONTRIBUTING.md
238
281
  - Gemfile
239
282
  - MIT-LICENSE
240
283
  - README.md
241
284
  - Rakefile
242
- - gemfiles/3.0.gemfile
285
+ - doc/bug_report_template.rb
286
+ - gemfiles/ar3.gemfile
243
287
  - lib/generators/paper_trail/USAGE
244
288
  - lib/generators/paper_trail/install_generator.rb
245
289
  - lib/generators/paper_trail/templates/add_object_changes_to_versions.rb
290
+ - lib/generators/paper_trail/templates/add_transaction_id_column_to_versions.rb
291
+ - lib/generators/paper_trail/templates/create_version_associations.rb
246
292
  - lib/generators/paper_trail/templates/create_versions.rb
247
293
  - lib/paper_trail.rb
294
+ - lib/paper_trail/attributes_serialization.rb
248
295
  - lib/paper_trail/cleaner.rb
249
296
  - lib/paper_trail/config.rb
250
297
  - lib/paper_trail/frameworks/active_record.rb
251
298
  - lib/paper_trail/frameworks/active_record/models/paper_trail/version.rb
299
+ - lib/paper_trail/frameworks/active_record/models/paper_trail/version_association.rb
252
300
  - lib/paper_trail/frameworks/cucumber.rb
253
301
  - lib/paper_trail/frameworks/rails.rb
254
302
  - lib/paper_trail/frameworks/rails/controller.rb
@@ -257,20 +305,35 @@ files:
257
305
  - lib/paper_trail/frameworks/rspec/helpers.rb
258
306
  - lib/paper_trail/frameworks/sinatra.rb
259
307
  - lib/paper_trail/has_paper_trail.rb
308
+ - lib/paper_trail/record_history.rb
309
+ - lib/paper_trail/reifier.rb
260
310
  - lib/paper_trail/serializers/json.rb
261
311
  - lib/paper_trail/serializers/yaml.rb
312
+ - lib/paper_trail/version_association_concern.rb
262
313
  - lib/paper_trail/version_concern.rb
263
314
  - lib/paper_trail/version_number.rb
264
315
  - paper_trail.gemspec
265
316
  - spec/generators/install_generator_spec.rb
317
+ - spec/models/animal_spec.rb
318
+ - spec/models/boolit_spec.rb
319
+ - spec/models/callback_modifier_spec.rb
320
+ - spec/models/fluxor_spec.rb
266
321
  - spec/models/gadget_spec.rb
267
322
  - spec/models/joined_version_spec.rb
323
+ - spec/models/json_version_spec.rb
324
+ - spec/models/kitchen/banana_spec.rb
325
+ - spec/models/not_on_update_spec.rb
268
326
  - spec/models/post_with_status_spec.rb
327
+ - spec/models/skipper_spec.rb
328
+ - spec/models/thing_spec.rb
269
329
  - spec/models/version_spec.rb
270
330
  - spec/models/widget_spec.rb
331
+ - spec/modules/paper_trail_spec.rb
271
332
  - spec/modules/version_concern_spec.rb
272
333
  - spec/modules/version_number_spec.rb
334
+ - spec/paper_trail/config_spec.rb
273
335
  - spec/paper_trail_spec.rb
336
+ - spec/rails_helper.rb
274
337
  - spec/requests/articles_spec.rb
275
338
  - spec/spec_helper.rb
276
339
  - spec/support/alt_db_init.rb
@@ -285,23 +348,43 @@ files:
285
348
  - test/dummy/app/models/article.rb
286
349
  - test/dummy/app/models/authorship.rb
287
350
  - test/dummy/app/models/book.rb
351
+ - test/dummy/app/models/boolit.rb
352
+ - test/dummy/app/models/callback_modifier.rb
288
353
  - test/dummy/app/models/cat.rb
354
+ - test/dummy/app/models/chapter.rb
355
+ - test/dummy/app/models/citation.rb
356
+ - test/dummy/app/models/customer.rb
289
357
  - test/dummy/app/models/document.rb
290
358
  - test/dummy/app/models/dog.rb
359
+ - test/dummy/app/models/editor.rb
360
+ - test/dummy/app/models/editorship.rb
291
361
  - test/dummy/app/models/elephant.rb
292
362
  - test/dummy/app/models/fluxor.rb
293
363
  - test/dummy/app/models/foo_widget.rb
364
+ - test/dummy/app/models/fruit.rb
294
365
  - test/dummy/app/models/gadget.rb
366
+ - test/dummy/app/models/kitchen/banana.rb
295
367
  - test/dummy/app/models/legacy_widget.rb
368
+ - test/dummy/app/models/line_item.rb
369
+ - test/dummy/app/models/not_on_update.rb
370
+ - test/dummy/app/models/order.rb
371
+ - test/dummy/app/models/paragraph.rb
296
372
  - test/dummy/app/models/person.rb
297
373
  - test/dummy/app/models/post.rb
298
374
  - test/dummy/app/models/post_with_status.rb
299
375
  - test/dummy/app/models/protected_widget.rb
376
+ - test/dummy/app/models/quotation.rb
377
+ - test/dummy/app/models/section.rb
378
+ - test/dummy/app/models/skipper.rb
300
379
  - test/dummy/app/models/song.rb
380
+ - test/dummy/app/models/thing.rb
301
381
  - test/dummy/app/models/translation.rb
382
+ - test/dummy/app/models/whatchamajigger.rb
302
383
  - test/dummy/app/models/widget.rb
303
384
  - test/dummy/app/models/wotsit.rb
304
385
  - test/dummy/app/versions/joined_version.rb
386
+ - test/dummy/app/versions/json_version.rb
387
+ - test/dummy/app/versions/kitchen/banana_version.rb
305
388
  - test/dummy/app/versions/post_version.rb
306
389
  - test/dummy/app/views/layouts/application.html.erb
307
390
  - test/dummy/config.ru
@@ -324,17 +407,6 @@ files:
324
407
  - test/dummy/config/routes.rb
325
408
  - test/dummy/db/migrate/20110208155312_set_up_test_tables.rb
326
409
  - test/dummy/db/schema.rb
327
- - test/dummy/public/404.html
328
- - test/dummy/public/422.html
329
- - test/dummy/public/500.html
330
- - test/dummy/public/favicon.ico
331
- - test/dummy/public/javascripts/application.js
332
- - test/dummy/public/javascripts/controls.js
333
- - test/dummy/public/javascripts/dragdrop.js
334
- - test/dummy/public/javascripts/effects.js
335
- - test/dummy/public/javascripts/prototype.js
336
- - test/dummy/public/javascripts/rails.js
337
- - test/dummy/public/stylesheets/.gitkeep
338
410
  - test/dummy/script/rails
339
411
  - test/functional/controller_test.rb
340
412
  - test/functional/enabled_for_controller_test.rb
@@ -343,6 +415,8 @@ files:
343
415
  - test/functional/thread_safety_test.rb
344
416
  - test/paper_trail_test.rb
345
417
  - test/test_helper.rb
418
+ - test/time_travel_helper.rb
419
+ - test/unit/associations_test.rb
346
420
  - test/unit/cleaner_test.rb
347
421
  - test/unit/inheritance_column_test.rb
348
422
  - test/unit/model_test.rb
@@ -364,30 +438,42 @@ require_paths:
364
438
  - lib
365
439
  required_ruby_version: !ruby/object:Gem::Requirement
366
440
  requirements:
367
- - - '>='
441
+ - - ">="
368
442
  - !ruby/object:Gem::Version
369
443
  version: '0'
370
444
  required_rubygems_version: !ruby/object:Gem::Requirement
371
445
  requirements:
372
- - - '>='
446
+ - - ">="
373
447
  - !ruby/object:Gem::Version
374
448
  version: 1.3.6
375
449
  requirements: []
376
450
  rubyforge_project:
377
- rubygems_version: 2.2.2
451
+ rubygems_version: 2.5.1
378
452
  signing_key:
379
453
  specification_version: 4
380
454
  summary: Track changes to your models' data. Good for auditing or versioning.
381
455
  test_files:
382
456
  - spec/generators/install_generator_spec.rb
457
+ - spec/models/animal_spec.rb
458
+ - spec/models/boolit_spec.rb
459
+ - spec/models/callback_modifier_spec.rb
460
+ - spec/models/fluxor_spec.rb
383
461
  - spec/models/gadget_spec.rb
384
462
  - spec/models/joined_version_spec.rb
463
+ - spec/models/json_version_spec.rb
464
+ - spec/models/kitchen/banana_spec.rb
465
+ - spec/models/not_on_update_spec.rb
385
466
  - spec/models/post_with_status_spec.rb
467
+ - spec/models/skipper_spec.rb
468
+ - spec/models/thing_spec.rb
386
469
  - spec/models/version_spec.rb
387
470
  - spec/models/widget_spec.rb
471
+ - spec/modules/paper_trail_spec.rb
388
472
  - spec/modules/version_concern_spec.rb
389
473
  - spec/modules/version_number_spec.rb
474
+ - spec/paper_trail/config_spec.rb
390
475
  - spec/paper_trail_spec.rb
476
+ - spec/rails_helper.rb
391
477
  - spec/requests/articles_spec.rb
392
478
  - spec/spec_helper.rb
393
479
  - spec/support/alt_db_init.rb
@@ -402,23 +488,43 @@ test_files:
402
488
  - test/dummy/app/models/article.rb
403
489
  - test/dummy/app/models/authorship.rb
404
490
  - test/dummy/app/models/book.rb
491
+ - test/dummy/app/models/boolit.rb
492
+ - test/dummy/app/models/callback_modifier.rb
405
493
  - test/dummy/app/models/cat.rb
494
+ - test/dummy/app/models/chapter.rb
495
+ - test/dummy/app/models/citation.rb
496
+ - test/dummy/app/models/customer.rb
406
497
  - test/dummy/app/models/document.rb
407
498
  - test/dummy/app/models/dog.rb
499
+ - test/dummy/app/models/editor.rb
500
+ - test/dummy/app/models/editorship.rb
408
501
  - test/dummy/app/models/elephant.rb
409
502
  - test/dummy/app/models/fluxor.rb
410
503
  - test/dummy/app/models/foo_widget.rb
504
+ - test/dummy/app/models/fruit.rb
411
505
  - test/dummy/app/models/gadget.rb
506
+ - test/dummy/app/models/kitchen/banana.rb
412
507
  - test/dummy/app/models/legacy_widget.rb
508
+ - test/dummy/app/models/line_item.rb
509
+ - test/dummy/app/models/not_on_update.rb
510
+ - test/dummy/app/models/order.rb
511
+ - test/dummy/app/models/paragraph.rb
413
512
  - test/dummy/app/models/person.rb
414
513
  - test/dummy/app/models/post.rb
415
514
  - test/dummy/app/models/post_with_status.rb
416
515
  - test/dummy/app/models/protected_widget.rb
516
+ - test/dummy/app/models/quotation.rb
517
+ - test/dummy/app/models/section.rb
518
+ - test/dummy/app/models/skipper.rb
417
519
  - test/dummy/app/models/song.rb
520
+ - test/dummy/app/models/thing.rb
418
521
  - test/dummy/app/models/translation.rb
522
+ - test/dummy/app/models/whatchamajigger.rb
419
523
  - test/dummy/app/models/widget.rb
420
524
  - test/dummy/app/models/wotsit.rb
421
525
  - test/dummy/app/versions/joined_version.rb
526
+ - test/dummy/app/versions/json_version.rb
527
+ - test/dummy/app/versions/kitchen/banana_version.rb
422
528
  - test/dummy/app/versions/post_version.rb
423
529
  - test/dummy/app/views/layouts/application.html.erb
424
530
  - test/dummy/config.ru
@@ -441,17 +547,6 @@ test_files:
441
547
  - test/dummy/config/routes.rb
442
548
  - test/dummy/db/migrate/20110208155312_set_up_test_tables.rb
443
549
  - test/dummy/db/schema.rb
444
- - test/dummy/public/404.html
445
- - test/dummy/public/422.html
446
- - test/dummy/public/500.html
447
- - test/dummy/public/favicon.ico
448
- - test/dummy/public/javascripts/application.js
449
- - test/dummy/public/javascripts/controls.js
450
- - test/dummy/public/javascripts/dragdrop.js
451
- - test/dummy/public/javascripts/effects.js
452
- - test/dummy/public/javascripts/prototype.js
453
- - test/dummy/public/javascripts/rails.js
454
- - test/dummy/public/stylesheets/.gitkeep
455
550
  - test/dummy/script/rails
456
551
  - test/functional/controller_test.rb
457
552
  - test/functional/enabled_for_controller_test.rb
@@ -460,6 +555,8 @@ test_files:
460
555
  - test/functional/thread_safety_test.rb
461
556
  - test/paper_trail_test.rb
462
557
  - test/test_helper.rb
558
+ - test/time_travel_helper.rb
559
+ - test/unit/associations_test.rb
463
560
  - test/unit/cleaner_test.rb
464
561
  - test/unit/inheritance_column_test.rb
465
562
  - test/unit/model_test.rb