paper_trail-background 1.0.0

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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 429ba548db6a5017655f122d0eb90807ff62d6a3c8c0cb500bc60dc104a49e10
4
+ data.tar.gz: d200d4f26668cbaf3c19fd66f88a1c1ab47e8adf9decd89d5e4c76ce391ad507
5
+ SHA512:
6
+ metadata.gz: 41c19e1a64c9f99610390ecddca4e7a8669590112310df538cebbf75567e6f92d85dd91202cad5a6227edd04e3013842372956097baacf0315b91422cd427087
7
+ data.tar.gz: 91348f10376acbadc06f425bab1307e89f21f7e46172709cc5e14902d7ff856f227eee56fb5eecfdcbc1d36a89fcaa9189505bc6412128ef0c237b404d72d451
data/README.md ADDED
@@ -0,0 +1,34 @@
1
+ # paper_trail-background
2
+
3
+ - [![Build](http://img.shields.io/travis-ci/krainboltgreene/paper_trail-background.svg?style=flat-square)](https://travis-ci.org/krainboltgreene/paper_trail-background)
4
+ - [![Downloads](http://img.shields.io/gem/dtv/paper_trail-background.svg?style=flat-square)](https://rubygems.org/gems/paper_trail-background)
5
+ - [![Version](http://img.shields.io/gem/v/paper_trail-background.svg?style=flat-square)](https://rubygems.org/gems/paper_trail-background)
6
+
7
+
8
+ TODO: Write a gem description
9
+
10
+
11
+ ## Using
12
+
13
+ TODO: Write usage instructions here
14
+
15
+
16
+ ## Installing
17
+
18
+ Run this command in your project:
19
+
20
+ $ bundle add paper_trail-background
21
+
22
+ Or install it yourself with:
23
+
24
+ $ gem install paper_trail-background
25
+
26
+
27
+ ## Contributing
28
+
29
+ 1. Read the [Code of Conduct](/CONDUCT.md)
30
+ 2. Fork it
31
+ 3. Create your feature branch (`git checkout -b my-new-feature`)
32
+ 4. Commit your changes (`git commit -am 'Add some feature'`)
33
+ 5. Push to the branch (`git push origin my-new-feature`)
34
+ 6. Create new Pull Request
data/Rakefile ADDED
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env rake
2
+
3
+ require "bundler/gem_tasks"
4
+ require "rspec/core/rake_task"
5
+
6
+ desc "Run all the tests in spec"
7
+ RSpec::Core::RakeTask.new(:spec) do |let|
8
+ let.pattern = "lib/**{,/*/**}/*_spec.rb"
9
+ end
10
+
11
+ desc "Default: run tests"
12
+ task default: :spec
data/bin/console ADDED
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "paper_trail-background"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ require "pry"
11
+ Pry.start
data/bin/setup ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,5 @@
1
+ require "paper_trail"
2
+
3
+ module PaperTrail
4
+ require_relative "paper_trail/background"
5
+ end
@@ -0,0 +1,92 @@
1
+ module PaperTrail
2
+ require_relative "background/version"
3
+ require_relative "background/sidekiq"
4
+
5
+ module Background
6
+ # @api private
7
+ # @return - The created version object, so that plugins can use it, e.g.
8
+ # paper_trail-association_tracking
9
+ def record_create
10
+ return unless enabled?
11
+
12
+ event = PaperTrail::Events::Create.new(@record, true)
13
+
14
+ # Merge data from `Event` with data from PT-AT. We no longer use
15
+ # `data_for_create` but PT-AT still does.
16
+ data = event.data.merge(data_for_create)
17
+
18
+ trigger_write(@record, data, :create)
19
+ end
20
+
21
+ # `recording_order` is "after" or "before". See ModelConfig#on_destroy.
22
+ #
23
+ # @api private
24
+ # @return - The created version object, so that plugins can use it, e.g.
25
+ # paper_trail-association_tracking
26
+ def record_destroy(recording_order)
27
+ return unless enabled?
28
+ return if @record.new_record?
29
+
30
+ in_after_callback = recording_order == "after"
31
+
32
+ event = PaperTrail::Events::Destroy.new(@record, in_after_callback)
33
+
34
+ # Merge data from `Event` with data from PT-AT. We no longer use
35
+ # `data_for_destroy` but PT-AT still does.
36
+ data = event.data.merge(data_for_destroy)
37
+
38
+ trigger_write(@record, data, :destroy)
39
+ end
40
+
41
+ # @api private
42
+ # @return - The created version object, so that plugins can use it, e.g.
43
+ # paper_trail-association_tracking
44
+ def record_update(force:, in_after_callback:, is_touch:)
45
+ return unless enabled?
46
+
47
+ event = PaperTrail::Events::Update.new(@record, in_after_callback, is_touch, nil)
48
+
49
+ return unless force || event.changed_notably?
50
+
51
+ # Merge data from `Event` with data from PT-AT. We no longer use
52
+ # `data_for_update_columns` but PT-AT still does.
53
+ data = event.data.merge(data_for_update_columns)
54
+
55
+ trigger_write(@record, data, :update)
56
+ end
57
+
58
+ # @api private
59
+ # @return - The created version object, so that plugins can use it, e.g.
60
+ # paper_trail-association_tracking
61
+ def record_update_columns(changes)
62
+ return unless enabled?
63
+
64
+ event = Events::Update.new(@record, false, false, changes)
65
+
66
+ return unless force || event.changed_notably?
67
+
68
+ # Merge data from `Event` with data from PT-AT. We no longer use
69
+ # `data_for_update_columns` but PT-AT still does.
70
+ data = event.data.merge(data_for_update_columns)
71
+
72
+ trigger_write(@record, data, :update)
73
+ end
74
+
75
+ private def trigger_write(record, data, event)
76
+ version_class = record.class.paper_trail.version_class
77
+
78
+ version_class.after_transaction do
79
+ VersionJob.perform_async(
80
+ version_class,
81
+ data.merge(
82
+ :item_id => record.id,
83
+ :item_type => record.class.name
84
+ ),
85
+ event
86
+ )
87
+ end
88
+ end
89
+ end
90
+ end
91
+
92
+ PaperTrail::RecordTrail.prepend(PaperTrail::Background)
@@ -0,0 +1,9 @@
1
+ module PaperTrail
2
+ module Background
3
+ module Sidekiq
4
+ def perform(version_class, attributes, event)
5
+ version = version_class.constantize.create!(attributes)
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,5 @@
1
+ module PaperTrail
2
+ module Background
3
+ VERSION = "1.0.0"
4
+ end
5
+ end
@@ -0,0 +1,7 @@
1
+ require "spec_helper"
2
+
3
+ RSpec.describe PaperTrail::Background::VERSION do
4
+ it "should be a string" do
5
+ expect(PaperTrail::Background::VERSION).to be_kind_of(String)
6
+ end
7
+ end
metadata ADDED
@@ -0,0 +1,139 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: paper_trail-background
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Kurtis Rainbolt-Greene
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-12-04 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.16'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.16'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rspec
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '3.8'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '3.8'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '12.2'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '12.2'
55
+ - !ruby/object:Gem::Dependency
56
+ name: pry
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '='
60
+ - !ruby/object:Gem::Version
61
+ version: 0.11.2
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '='
67
+ - !ruby/object:Gem::Version
68
+ version: 0.11.2
69
+ - !ruby/object:Gem::Dependency
70
+ name: pry-doc
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '='
74
+ - !ruby/object:Gem::Version
75
+ version: 0.11.1
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '='
81
+ - !ruby/object:Gem::Version
82
+ version: 0.11.1
83
+ - !ruby/object:Gem::Dependency
84
+ name: paper_trail
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - '='
88
+ - !ruby/object:Gem::Version
89
+ version: 10.0.1
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '='
95
+ - !ruby/object:Gem::Version
96
+ version: 10.0.1
97
+ description: A library for making paper_trail a background process
98
+ email:
99
+ - kurtis@rainbolt-greene.online
100
+ executables:
101
+ - setup
102
+ - console
103
+ extensions: []
104
+ extra_rdoc_files: []
105
+ files:
106
+ - README.md
107
+ - Rakefile
108
+ - bin/console
109
+ - bin/setup
110
+ - lib/paper_trail-background.rb
111
+ - lib/paper_trail/background.rb
112
+ - lib/paper_trail/background/sidekiq.rb
113
+ - lib/paper_trail/background/version.rb
114
+ - lib/paper_trail/background/version_spec.rb
115
+ homepage: http://krainboltgreene.github.io/paper_trail-background.rb
116
+ licenses:
117
+ - ISC
118
+ metadata: {}
119
+ post_install_message:
120
+ rdoc_options: []
121
+ require_paths:
122
+ - lib
123
+ required_ruby_version: !ruby/object:Gem::Requirement
124
+ requirements:
125
+ - - ">="
126
+ - !ruby/object:Gem::Version
127
+ version: '0'
128
+ required_rubygems_version: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - ">="
131
+ - !ruby/object:Gem::Version
132
+ version: '0'
133
+ requirements: []
134
+ rubyforge_project:
135
+ rubygems_version: 2.7.7
136
+ signing_key:
137
+ specification_version: 4
138
+ summary: A library for making paper_trail a background process
139
+ test_files: []