paper_trail 7.1.0 → 7.1.1

Sign up to get free protection for your applications and to get access to all the features.
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