paper_trail 7.1.0 → 7.1.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 (151) hide show
  1. checksums.yaml +4 -4
  2. data/lib/paper_trail/record_trail.rb +1 -1
  3. data/lib/paper_trail/version_number.rb +1 -1
  4. metadata +3 -274
  5. data/.github/CONTRIBUTING.md +0 -151
  6. data/.github/ISSUE_TEMPLATE.md +0 -13
  7. data/.gitignore +0 -23
  8. data/.rspec +0 -2
  9. data/.rubocop.yml +0 -135
  10. data/.rubocop_todo.yml +0 -41
  11. data/.travis.yml +0 -41
  12. data/Appraisals +0 -26
  13. data/CHANGELOG.md +0 -739
  14. data/Gemfile +0 -2
  15. data/MIT-LICENSE +0 -20
  16. data/README.md +0 -1613
  17. data/Rakefile +0 -38
  18. data/doc/bug_report_template.rb +0 -73
  19. data/doc/triage.md +0 -27
  20. data/doc/warning_about_not_setting_whodunnit.md +0 -33
  21. data/gemfiles/ar_4.0.gemfile +0 -7
  22. data/gemfiles/ar_4.2.gemfile +0 -7
  23. data/gemfiles/ar_5.0.gemfile +0 -8
  24. data/gemfiles/ar_5.1.gemfile +0 -8
  25. data/gemfiles/ar_master.gemfile +0 -9
  26. data/lib/generators/paper_trail/default_initializer.rb +0 -0
  27. data/paper_trail.gemspec +0 -49
  28. data/spec/controllers/articles_controller_spec.rb +0 -28
  29. data/spec/controllers/widgets_controller_spec.rb +0 -85
  30. data/spec/dummy_app/Rakefile +0 -7
  31. data/spec/dummy_app/app/controllers/application_controller.rb +0 -30
  32. data/spec/dummy_app/app/controllers/articles_controller.rb +0 -16
  33. data/spec/dummy_app/app/controllers/test_controller.rb +0 -5
  34. data/spec/dummy_app/app/controllers/widgets_controller.rb +0 -28
  35. data/spec/dummy_app/app/models/animal.rb +0 -4
  36. data/spec/dummy_app/app/models/article.rb +0 -25
  37. data/spec/dummy_app/app/models/authorship.rb +0 -5
  38. data/spec/dummy_app/app/models/bar_habtm.rb +0 -4
  39. data/spec/dummy_app/app/models/book.rb +0 -9
  40. data/spec/dummy_app/app/models/boolit.rb +0 -4
  41. data/spec/dummy_app/app/models/callback_modifier.rb +0 -45
  42. data/spec/dummy_app/app/models/car.rb +0 -3
  43. data/spec/dummy_app/app/models/cat.rb +0 -2
  44. data/spec/dummy_app/app/models/chapter.rb +0 -9
  45. data/spec/dummy_app/app/models/citation.rb +0 -5
  46. data/spec/dummy_app/app/models/custom_primary_key_record.rb +0 -15
  47. data/spec/dummy_app/app/models/customer.rb +0 -4
  48. data/spec/dummy_app/app/models/document.rb +0 -8
  49. data/spec/dummy_app/app/models/dog.rb +0 -2
  50. data/spec/dummy_app/app/models/editor.rb +0 -4
  51. data/spec/dummy_app/app/models/editorship.rb +0 -5
  52. data/spec/dummy_app/app/models/elephant.rb +0 -3
  53. data/spec/dummy_app/app/models/fluxor.rb +0 -3
  54. data/spec/dummy_app/app/models/foo_habtm.rb +0 -5
  55. data/spec/dummy_app/app/models/foo_widget.rb +0 -2
  56. data/spec/dummy_app/app/models/fruit.rb +0 -5
  57. data/spec/dummy_app/app/models/gadget.rb +0 -3
  58. data/spec/dummy_app/app/models/kitchen/banana.rb +0 -5
  59. data/spec/dummy_app/app/models/legacy_widget.rb +0 -6
  60. data/spec/dummy_app/app/models/line_item.rb +0 -4
  61. data/spec/dummy_app/app/models/not_on_update.rb +0 -4
  62. data/spec/dummy_app/app/models/on/create.rb +0 -6
  63. data/spec/dummy_app/app/models/on/destroy.rb +0 -6
  64. data/spec/dummy_app/app/models/on/empty_array.rb +0 -6
  65. data/spec/dummy_app/app/models/on/update.rb +0 -6
  66. data/spec/dummy_app/app/models/order.rb +0 -5
  67. data/spec/dummy_app/app/models/paragraph.rb +0 -5
  68. data/spec/dummy_app/app/models/person.rb +0 -39
  69. data/spec/dummy_app/app/models/post.rb +0 -3
  70. data/spec/dummy_app/app/models/post_with_status.rb +0 -7
  71. data/spec/dummy_app/app/models/quotation.rb +0 -5
  72. data/spec/dummy_app/app/models/section.rb +0 -6
  73. data/spec/dummy_app/app/models/skipper.rb +0 -3
  74. data/spec/dummy_app/app/models/song.rb +0 -37
  75. data/spec/dummy_app/app/models/thing.rb +0 -3
  76. data/spec/dummy_app/app/models/translation.rb +0 -11
  77. data/spec/dummy_app/app/models/truck.rb +0 -4
  78. data/spec/dummy_app/app/models/vehicle.rb +0 -4
  79. data/spec/dummy_app/app/models/whatchamajigger.rb +0 -4
  80. data/spec/dummy_app/app/models/widget.rb +0 -8
  81. data/spec/dummy_app/app/models/wotsit.rb +0 -8
  82. data/spec/dummy_app/app/versions/custom_primary_key_record_version.rb +0 -3
  83. data/spec/dummy_app/app/versions/joined_version.rb +0 -6
  84. data/spec/dummy_app/app/versions/json_version.rb +0 -3
  85. data/spec/dummy_app/app/versions/kitchen/banana_version.rb +0 -5
  86. data/spec/dummy_app/app/versions/post_version.rb +0 -3
  87. data/spec/dummy_app/config.ru +0 -4
  88. data/spec/dummy_app/config/application.rb +0 -39
  89. data/spec/dummy_app/config/boot.rb +0 -24
  90. data/spec/dummy_app/config/database.mysql.yml +0 -19
  91. data/spec/dummy_app/config/database.postgres.yml +0 -15
  92. data/spec/dummy_app/config/database.sqlite.yml +0 -15
  93. data/spec/dummy_app/config/environment.rb +0 -5
  94. data/spec/dummy_app/config/environments/development.rb +0 -36
  95. data/spec/dummy_app/config/environments/production.rb +0 -74
  96. data/spec/dummy_app/config/environments/test.rb +0 -46
  97. data/spec/dummy_app/config/initializers/backtrace_silencers.rb +0 -9
  98. data/spec/dummy_app/config/initializers/inflections.rb +0 -10
  99. data/spec/dummy_app/config/initializers/mime_types.rb +0 -5
  100. data/spec/dummy_app/config/initializers/paper_trail.rb +0 -1
  101. data/spec/dummy_app/config/initializers/secret_token.rb +0 -9
  102. data/spec/dummy_app/config/initializers/session_store.rb +0 -8
  103. data/spec/dummy_app/config/locales/en.yml +0 -5
  104. data/spec/dummy_app/config/routes.rb +0 -4
  105. data/spec/dummy_app/db/migrate/20110208155312_set_up_test_tables.rb +0 -344
  106. data/spec/dummy_app/db/schema.rb +0 -298
  107. data/spec/generators/install_generator_spec.rb +0 -88
  108. data/spec/models/animal_spec.rb +0 -61
  109. data/spec/models/article_spec.rb +0 -186
  110. data/spec/models/boolit_spec.rb +0 -41
  111. data/spec/models/callback_modifier_spec.rb +0 -92
  112. data/spec/models/car_spec.rb +0 -13
  113. data/spec/models/custom_primary_key_record_spec.rb +0 -18
  114. data/spec/models/document_spec.rb +0 -57
  115. data/spec/models/gadget_spec.rb +0 -63
  116. data/spec/models/joined_version_spec.rb +0 -41
  117. data/spec/models/json_version_spec.rb +0 -101
  118. data/spec/models/kitchen/banana_spec.rb +0 -14
  119. data/spec/models/legacy_widget_spec.rb +0 -40
  120. data/spec/models/not_on_update_spec.rb +0 -22
  121. data/spec/models/on/create_spec.rb +0 -27
  122. data/spec/models/on/destroy_spec.rb +0 -27
  123. data/spec/models/on/empty_array_spec.rb +0 -30
  124. data/spec/models/on/update_spec.rb +0 -27
  125. data/spec/models/post_with_status_spec.rb +0 -46
  126. data/spec/models/skipper_spec.rb +0 -42
  127. data/spec/models/thing_spec.rb +0 -11
  128. data/spec/models/translation_spec.rb +0 -70
  129. data/spec/models/vehicle_spec.rb +0 -5
  130. data/spec/models/version_spec.rb +0 -282
  131. data/spec/models/widget_spec.rb +0 -338
  132. data/spec/modules/paper_trail_spec.rb +0 -27
  133. data/spec/modules/version_concern_spec.rb +0 -28
  134. data/spec/modules/version_number_spec.rb +0 -18
  135. data/spec/paper_trail/associations_spec.rb +0 -965
  136. data/spec/paper_trail/cleaner_spec.rb +0 -152
  137. data/spec/paper_trail/config_spec.rb +0 -45
  138. data/spec/paper_trail/model_spec.rb +0 -992
  139. data/spec/paper_trail/serializer_spec.rb +0 -85
  140. data/spec/paper_trail/serializers/custom_json_serializer_spec.rb +0 -18
  141. data/spec/paper_trail/serializers/custom_yaml_serializer_spec.rb +0 -45
  142. data/spec/paper_trail/serializers/json_spec.rb +0 -57
  143. data/spec/paper_trail/serializers/yaml_spec.rb +0 -42
  144. data/spec/paper_trail/thread_safety_spec.rb +0 -44
  145. data/spec/paper_trail/version_limit_spec.rb +0 -55
  146. data/spec/paper_trail/version_spec.rb +0 -96
  147. data/spec/paper_trail_spec.rb +0 -122
  148. data/spec/requests/articles_spec.rb +0 -34
  149. data/spec/spec_helper.rb +0 -78
  150. data/spec/support/alt_db_init.rb +0 -54
  151. data/spec/support/custom_json_serializer.rb +0 -13
@@ -1,5 +0,0 @@
1
- class TestController < ActionController::Base
2
- def user_for_paper_trail
3
- Thread.current.object_id
4
- end
5
- end
@@ -1,28 +0,0 @@
1
- class WidgetsController < ApplicationController
2
- def paper_trail_enabled_for_controller
3
- request.user_agent != "Disable User-Agent"
4
- end
5
-
6
- def create
7
- @widget = Widget.create widget_params
8
- head :ok
9
- end
10
-
11
- def update
12
- @widget = Widget.find params[:id]
13
- @widget.update_attributes widget_params
14
- head :ok
15
- end
16
-
17
- def destroy
18
- @widget = Widget.find params[:id]
19
- @widget.destroy
20
- head :ok
21
- end
22
-
23
- private
24
-
25
- def widget_params
26
- params[:widget].permit!
27
- end
28
- end
@@ -1,4 +0,0 @@
1
- class Animal < ActiveRecord::Base
2
- has_paper_trail
3
- self.inheritance_column = "species"
4
- end
@@ -1,25 +0,0 @@
1
- # Demonstrates the `only` and `ignore` attributes, among other things.
2
- class Article < ActiveRecord::Base
3
- has_paper_trail(
4
- ignore: [
5
- :title, {
6
- abstract: proc { |obj|
7
- ["ignore abstract", "Other abstract"].include? obj.abstract
8
- }
9
- }
10
- ],
11
- only: [:content, { abstract: proc { |obj| obj.abstract.present? } }],
12
- skip: [:file_upload],
13
- meta: {
14
- answer: 42,
15
- action: :action_data_provider_method,
16
- question: proc { "31 + 11 = #{31 + 11}" },
17
- article_id: proc { |article| article.id },
18
- title: :title
19
- }
20
- )
21
-
22
- def action_data_provider_method
23
- object_id.to_s
24
- end
25
- end
@@ -1,5 +0,0 @@
1
- class Authorship < ActiveRecord::Base
2
- belongs_to :book
3
- belongs_to :author, class_name: "Person"
4
- has_paper_trail
5
- end
@@ -1,4 +0,0 @@
1
- class BarHabtm < ActiveRecord::Base
2
- has_and_belongs_to_many :foo_habtms
3
- has_paper_trail
4
- end
@@ -1,9 +0,0 @@
1
- class Book < ActiveRecord::Base
2
- has_many :authorships, dependent: :destroy
3
- has_many :authors, through: :authorships
4
-
5
- has_many :editorships, dependent: :destroy
6
- has_many :editors, through: :editorships
7
-
8
- has_paper_trail
9
- end
@@ -1,4 +0,0 @@
1
- class Boolit < ActiveRecord::Base
2
- default_scope { where(scoped: true) }
3
- has_paper_trail
4
- end
@@ -1,45 +0,0 @@
1
- class CallbackModifier < ActiveRecord::Base
2
- has_paper_trail on: []
3
-
4
- def test_destroy
5
- transaction do
6
- run_callbacks(:destroy) do
7
- self.deleted = true
8
- save!
9
- end
10
- end
11
- end
12
-
13
- def flagged_deleted?
14
- deleted?
15
- end
16
- end
17
-
18
- class BeforeDestroyModifier < CallbackModifier
19
- has_paper_trail on: []
20
- paper_trail.on_destroy :before
21
- end
22
-
23
- class AfterDestroyModifier < CallbackModifier
24
- has_paper_trail on: []
25
- paper_trail.on_destroy :after
26
- end
27
-
28
- class NoArgDestroyModifier < CallbackModifier
29
- has_paper_trail on: []
30
- paper_trail.on_destroy
31
- end
32
-
33
- class UpdateModifier < CallbackModifier
34
- has_paper_trail on: []
35
- paper_trail.on_update
36
- end
37
-
38
- class CreateModifier < CallbackModifier
39
- has_paper_trail on: []
40
- paper_trail.on_create
41
- end
42
-
43
- class DefaultModifier < CallbackModifier
44
- has_paper_trail
45
- end
@@ -1,3 +0,0 @@
1
- class Car < Vehicle
2
- has_paper_trail
3
- end
@@ -1,2 +0,0 @@
1
- class Cat < Animal
2
- end
@@ -1,9 +0,0 @@
1
- class Chapter < ActiveRecord::Base
2
- has_many :sections, dependent: :destroy
3
- has_many :paragraphs, through: :sections
4
-
5
- has_many :quotations, dependent: :destroy
6
- has_many :citations, through: :quotations
7
-
8
- has_paper_trail
9
- end
@@ -1,5 +0,0 @@
1
- class Citation < ActiveRecord::Base
2
- belongs_to :quotation
3
-
4
- has_paper_trail
5
- end
@@ -1,15 +0,0 @@
1
- require "securerandom"
2
-
3
- class CustomPrimaryKeyRecord < ActiveRecord::Base
4
- self.primary_key = :uuid
5
-
6
- has_paper_trail class_name: "CustomPrimaryKeyRecordVersion"
7
-
8
- # This default_scope is to test the case of the Version#item association
9
- # not returning the item due to unmatched default_scope on the model.
10
- default_scope { where(name: "custom_primary_key_record") }
11
-
12
- before_create do
13
- self.uuid ||= SecureRandom.uuid
14
- end
15
- end
@@ -1,4 +0,0 @@
1
- class Customer < ActiveRecord::Base
2
- has_many :orders, dependent: :destroy
3
- has_paper_trail
4
- end
@@ -1,8 +0,0 @@
1
- # Demonstrates a "custom versions association name". Instead of the assication
2
- # being named `versions`, it will be named `paper_trail_versions`.
3
- class Document < ActiveRecord::Base
4
- has_paper_trail(
5
- versions: :paper_trail_versions,
6
- on: %i[create update]
7
- )
8
- end
@@ -1,2 +0,0 @@
1
- class Dog < Animal
2
- end
@@ -1,4 +0,0 @@
1
- # to demonstrate a has_through association that does not have paper_trail enabled
2
- class Editor < ActiveRecord::Base
3
- has_many :editorships, dependent: :destroy
4
- end
@@ -1,5 +0,0 @@
1
- class Editorship < ActiveRecord::Base
2
- belongs_to :book
3
- belongs_to :editor
4
- has_paper_trail
5
- end
@@ -1,3 +0,0 @@
1
- class Elephant < Animal
2
- paper_trail.disable
3
- end
@@ -1,3 +0,0 @@
1
- class Fluxor < ActiveRecord::Base
2
- belongs_to :widget
3
- end
@@ -1,5 +0,0 @@
1
- class FooHabtm < ActiveRecord::Base
2
- has_and_belongs_to_many :bar_habtms
3
- accepts_nested_attributes_for :bar_habtms
4
- has_paper_trail
5
- end
@@ -1,2 +0,0 @@
1
- class FooWidget < Widget
2
- end
@@ -1,5 +0,0 @@
1
- class Fruit < ActiveRecord::Base
2
- if ENV["DB"] == "postgres" || JsonVersion.table_exists?
3
- has_paper_trail class_name: "JsonVersion"
4
- end
5
- end
@@ -1,3 +0,0 @@
1
- class Gadget < ActiveRecord::Base
2
- has_paper_trail ignore: :brand
3
- end
@@ -1,5 +0,0 @@
1
- module Kitchen
2
- class Banana < ActiveRecord::Base
3
- has_paper_trail class_name: "Kitchen::BananaVersion"
4
- end
5
- end
@@ -1,6 +0,0 @@
1
- # The `legacy_widgets` table has a `version` column that would conflict with our
2
- # `version` method. It is configured to define a method named `custom_version`
3
- # instead.
4
- class LegacyWidget < ActiveRecord::Base
5
- has_paper_trail ignore: :version, version: "custom_version"
6
- end
@@ -1,4 +0,0 @@
1
- class LineItem < ActiveRecord::Base
2
- belongs_to :order, dependent: :destroy
3
- has_paper_trail
4
- end
@@ -1,4 +0,0 @@
1
- # This model does not record versions when updated.
2
- class NotOnUpdate < ActiveRecord::Base
3
- has_paper_trail on: %i[create destroy]
4
- end
@@ -1,6 +0,0 @@
1
- module On
2
- class Create < ActiveRecord::Base
3
- self.table_name = :on_create
4
- has_paper_trail on: [:create]
5
- end
6
- end
@@ -1,6 +0,0 @@
1
- module On
2
- class Destroy < ActiveRecord::Base
3
- self.table_name = :on_destroy
4
- has_paper_trail on: [:destroy]
5
- end
6
- end
@@ -1,6 +0,0 @@
1
- module On
2
- class EmptyArray < ActiveRecord::Base
3
- self.table_name = :on_empty_array
4
- has_paper_trail on: []
5
- end
6
- end
@@ -1,6 +0,0 @@
1
- module On
2
- class Update < ActiveRecord::Base
3
- self.table_name = :on_update
4
- has_paper_trail on: [:update]
5
- end
6
- end
@@ -1,5 +0,0 @@
1
- class Order < ActiveRecord::Base
2
- belongs_to :customer
3
- has_many :line_items
4
- has_paper_trail
5
- end
@@ -1,5 +0,0 @@
1
- class Paragraph < ActiveRecord::Base
2
- belongs_to :section
3
-
4
- has_paper_trail
5
- end
@@ -1,39 +0,0 @@
1
- class Person < ActiveRecord::Base
2
- has_many :authorships, foreign_key: :author_id, dependent: :destroy
3
- has_many :books, through: :authorships
4
- belongs_to :mentor, class_name: "Person", foreign_key: :mentor_id
5
- has_paper_trail
6
-
7
- # Convert strings to TimeZone objects when assigned
8
- def time_zone=(value)
9
- if value.is_a? ActiveSupport::TimeZone
10
- super
11
- else
12
- zone = ::Time.find_zone(value) # nil if can't find time zone
13
- super zone
14
- end
15
- end
16
-
17
- # Store TimeZone objects as strings when serialized to database
18
- class TimeZoneSerializer
19
- class << self
20
- def dump(zone)
21
- zone.try(:name)
22
- end
23
-
24
- def load(value)
25
- ::Time.find_zone(value)
26
- end
27
- end
28
-
29
- def dump(zone)
30
- self.class.dump(zone)
31
- end
32
-
33
- def load(value)
34
- self.class.load(value)
35
- end
36
- end
37
-
38
- serialize :time_zone, TimeZoneSerializer.new
39
- end
@@ -1,3 +0,0 @@
1
- class Post < ActiveRecord::Base
2
- has_paper_trail class_name: "PostVersion"
3
- end
@@ -1,7 +0,0 @@
1
- # This model tests ActiveRecord::Enum, which was added in AR 4.1
2
- # http://edgeguides.rubyonrails.org/4_1_release_notes.html#active-record-enums
3
- class PostWithStatus < ActiveRecord::Base
4
- has_paper_trail
5
-
6
- enum status: { draft: 0, published: 1, archived: 2 }
7
- end
@@ -1,5 +0,0 @@
1
- class Quotation < ActiveRecord::Base
2
- belongs_to :chapter
3
- has_many :citations, dependent: :destroy
4
- has_paper_trail
5
- end
@@ -1,6 +0,0 @@
1
- class Section < ActiveRecord::Base
2
- belongs_to :chapter
3
- has_many :paragraphs, dependent: :destroy
4
-
5
- has_paper_trail
6
- end
@@ -1,3 +0,0 @@
1
- class Skipper < ActiveRecord::Base
2
- has_paper_trail ignore: [:created_at], skip: [:another_timestamp]
3
- end
@@ -1,37 +0,0 @@
1
- module OverrideSongAttributesTheRails4Way
2
- def attributes
3
- if name
4
- super.merge(name: name)
5
- else
6
- super
7
- end
8
- end
9
-
10
- def changed_attributes
11
- if name
12
- super.merge(name: name)
13
- else
14
- super
15
- end
16
- end
17
- end
18
-
19
- class Song < ActiveRecord::Base
20
- has_paper_trail
21
-
22
- # Uses an integer of seconds to hold the length of the song
23
- def length=(minutes)
24
- write_attribute(:length, minutes.to_i * 60)
25
- end
26
-
27
- def length
28
- read_attribute(:length) / 60
29
- end
30
-
31
- if ActiveRecord::VERSION::MAJOR >= 5
32
- attribute :name, :string
33
- else
34
- attr_accessor :name
35
- prepend OverrideSongAttributesTheRails4Way
36
- end
37
- end