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.
- checksums.yaml +4 -4
- data/lib/paper_trail/record_trail.rb +1 -1
- data/lib/paper_trail/version_number.rb +1 -1
- metadata +3 -274
- data/.github/CONTRIBUTING.md +0 -151
- data/.github/ISSUE_TEMPLATE.md +0 -13
- data/.gitignore +0 -23
- data/.rspec +0 -2
- data/.rubocop.yml +0 -135
- data/.rubocop_todo.yml +0 -41
- data/.travis.yml +0 -41
- data/Appraisals +0 -26
- data/CHANGELOG.md +0 -739
- data/Gemfile +0 -2
- data/MIT-LICENSE +0 -20
- data/README.md +0 -1613
- data/Rakefile +0 -38
- data/doc/bug_report_template.rb +0 -73
- data/doc/triage.md +0 -27
- data/doc/warning_about_not_setting_whodunnit.md +0 -33
- data/gemfiles/ar_4.0.gemfile +0 -7
- data/gemfiles/ar_4.2.gemfile +0 -7
- data/gemfiles/ar_5.0.gemfile +0 -8
- data/gemfiles/ar_5.1.gemfile +0 -8
- data/gemfiles/ar_master.gemfile +0 -9
- data/lib/generators/paper_trail/default_initializer.rb +0 -0
- data/paper_trail.gemspec +0 -49
- data/spec/controllers/articles_controller_spec.rb +0 -28
- data/spec/controllers/widgets_controller_spec.rb +0 -85
- data/spec/dummy_app/Rakefile +0 -7
- data/spec/dummy_app/app/controllers/application_controller.rb +0 -30
- data/spec/dummy_app/app/controllers/articles_controller.rb +0 -16
- data/spec/dummy_app/app/controllers/test_controller.rb +0 -5
- data/spec/dummy_app/app/controllers/widgets_controller.rb +0 -28
- data/spec/dummy_app/app/models/animal.rb +0 -4
- data/spec/dummy_app/app/models/article.rb +0 -25
- data/spec/dummy_app/app/models/authorship.rb +0 -5
- data/spec/dummy_app/app/models/bar_habtm.rb +0 -4
- data/spec/dummy_app/app/models/book.rb +0 -9
- data/spec/dummy_app/app/models/boolit.rb +0 -4
- data/spec/dummy_app/app/models/callback_modifier.rb +0 -45
- data/spec/dummy_app/app/models/car.rb +0 -3
- data/spec/dummy_app/app/models/cat.rb +0 -2
- data/spec/dummy_app/app/models/chapter.rb +0 -9
- data/spec/dummy_app/app/models/citation.rb +0 -5
- data/spec/dummy_app/app/models/custom_primary_key_record.rb +0 -15
- data/spec/dummy_app/app/models/customer.rb +0 -4
- data/spec/dummy_app/app/models/document.rb +0 -8
- data/spec/dummy_app/app/models/dog.rb +0 -2
- data/spec/dummy_app/app/models/editor.rb +0 -4
- data/spec/dummy_app/app/models/editorship.rb +0 -5
- data/spec/dummy_app/app/models/elephant.rb +0 -3
- data/spec/dummy_app/app/models/fluxor.rb +0 -3
- data/spec/dummy_app/app/models/foo_habtm.rb +0 -5
- data/spec/dummy_app/app/models/foo_widget.rb +0 -2
- data/spec/dummy_app/app/models/fruit.rb +0 -5
- data/spec/dummy_app/app/models/gadget.rb +0 -3
- data/spec/dummy_app/app/models/kitchen/banana.rb +0 -5
- data/spec/dummy_app/app/models/legacy_widget.rb +0 -6
- data/spec/dummy_app/app/models/line_item.rb +0 -4
- data/spec/dummy_app/app/models/not_on_update.rb +0 -4
- data/spec/dummy_app/app/models/on/create.rb +0 -6
- data/spec/dummy_app/app/models/on/destroy.rb +0 -6
- data/spec/dummy_app/app/models/on/empty_array.rb +0 -6
- data/spec/dummy_app/app/models/on/update.rb +0 -6
- data/spec/dummy_app/app/models/order.rb +0 -5
- data/spec/dummy_app/app/models/paragraph.rb +0 -5
- data/spec/dummy_app/app/models/person.rb +0 -39
- data/spec/dummy_app/app/models/post.rb +0 -3
- data/spec/dummy_app/app/models/post_with_status.rb +0 -7
- data/spec/dummy_app/app/models/quotation.rb +0 -5
- data/spec/dummy_app/app/models/section.rb +0 -6
- data/spec/dummy_app/app/models/skipper.rb +0 -3
- data/spec/dummy_app/app/models/song.rb +0 -37
- data/spec/dummy_app/app/models/thing.rb +0 -3
- data/spec/dummy_app/app/models/translation.rb +0 -11
- data/spec/dummy_app/app/models/truck.rb +0 -4
- data/spec/dummy_app/app/models/vehicle.rb +0 -4
- data/spec/dummy_app/app/models/whatchamajigger.rb +0 -4
- data/spec/dummy_app/app/models/widget.rb +0 -8
- data/spec/dummy_app/app/models/wotsit.rb +0 -8
- data/spec/dummy_app/app/versions/custom_primary_key_record_version.rb +0 -3
- data/spec/dummy_app/app/versions/joined_version.rb +0 -6
- data/spec/dummy_app/app/versions/json_version.rb +0 -3
- data/spec/dummy_app/app/versions/kitchen/banana_version.rb +0 -5
- data/spec/dummy_app/app/versions/post_version.rb +0 -3
- data/spec/dummy_app/config.ru +0 -4
- data/spec/dummy_app/config/application.rb +0 -39
- data/spec/dummy_app/config/boot.rb +0 -24
- data/spec/dummy_app/config/database.mysql.yml +0 -19
- data/spec/dummy_app/config/database.postgres.yml +0 -15
- data/spec/dummy_app/config/database.sqlite.yml +0 -15
- data/spec/dummy_app/config/environment.rb +0 -5
- data/spec/dummy_app/config/environments/development.rb +0 -36
- data/spec/dummy_app/config/environments/production.rb +0 -74
- data/spec/dummy_app/config/environments/test.rb +0 -46
- data/spec/dummy_app/config/initializers/backtrace_silencers.rb +0 -9
- data/spec/dummy_app/config/initializers/inflections.rb +0 -10
- data/spec/dummy_app/config/initializers/mime_types.rb +0 -5
- data/spec/dummy_app/config/initializers/paper_trail.rb +0 -1
- data/spec/dummy_app/config/initializers/secret_token.rb +0 -9
- data/spec/dummy_app/config/initializers/session_store.rb +0 -8
- data/spec/dummy_app/config/locales/en.yml +0 -5
- data/spec/dummy_app/config/routes.rb +0 -4
- data/spec/dummy_app/db/migrate/20110208155312_set_up_test_tables.rb +0 -344
- data/spec/dummy_app/db/schema.rb +0 -298
- data/spec/generators/install_generator_spec.rb +0 -88
- data/spec/models/animal_spec.rb +0 -61
- data/spec/models/article_spec.rb +0 -186
- data/spec/models/boolit_spec.rb +0 -41
- data/spec/models/callback_modifier_spec.rb +0 -92
- data/spec/models/car_spec.rb +0 -13
- data/spec/models/custom_primary_key_record_spec.rb +0 -18
- data/spec/models/document_spec.rb +0 -57
- data/spec/models/gadget_spec.rb +0 -63
- data/spec/models/joined_version_spec.rb +0 -41
- data/spec/models/json_version_spec.rb +0 -101
- data/spec/models/kitchen/banana_spec.rb +0 -14
- data/spec/models/legacy_widget_spec.rb +0 -40
- data/spec/models/not_on_update_spec.rb +0 -22
- data/spec/models/on/create_spec.rb +0 -27
- data/spec/models/on/destroy_spec.rb +0 -27
- data/spec/models/on/empty_array_spec.rb +0 -30
- data/spec/models/on/update_spec.rb +0 -27
- data/spec/models/post_with_status_spec.rb +0 -46
- data/spec/models/skipper_spec.rb +0 -42
- data/spec/models/thing_spec.rb +0 -11
- data/spec/models/translation_spec.rb +0 -70
- data/spec/models/vehicle_spec.rb +0 -5
- data/spec/models/version_spec.rb +0 -282
- data/spec/models/widget_spec.rb +0 -338
- data/spec/modules/paper_trail_spec.rb +0 -27
- data/spec/modules/version_concern_spec.rb +0 -28
- data/spec/modules/version_number_spec.rb +0 -18
- data/spec/paper_trail/associations_spec.rb +0 -965
- data/spec/paper_trail/cleaner_spec.rb +0 -152
- data/spec/paper_trail/config_spec.rb +0 -45
- data/spec/paper_trail/model_spec.rb +0 -992
- data/spec/paper_trail/serializer_spec.rb +0 -85
- data/spec/paper_trail/serializers/custom_json_serializer_spec.rb +0 -18
- data/spec/paper_trail/serializers/custom_yaml_serializer_spec.rb +0 -45
- data/spec/paper_trail/serializers/json_spec.rb +0 -57
- data/spec/paper_trail/serializers/yaml_spec.rb +0 -42
- data/spec/paper_trail/thread_safety_spec.rb +0 -44
- data/spec/paper_trail/version_limit_spec.rb +0 -55
- data/spec/paper_trail/version_spec.rb +0 -96
- data/spec/paper_trail_spec.rb +0 -122
- data/spec/requests/articles_spec.rb +0 -34
- data/spec/spec_helper.rb +0 -78
- data/spec/support/alt_db_init.rb +0 -54
- data/spec/support/custom_json_serializer.rb +0 -13
@@ -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,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,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,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,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,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,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,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,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
|