ar_transaction_changes 1.1.9 → 1.1.11
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 +4 -4
- data/.devcontainer/devcontainer.json +26 -0
- data/.github/workflows/ci.yml +60 -16
- data/.github/workflows/release.yml +26 -0
- data/Gemfile +1 -1
- data/LICENSE.txt +1 -1
- data/ar_transaction_changes.gemspec +6 -5
- data/gemfiles/rails_7.0.gemfile +6 -0
- data/{Gemfile.rails_head → gemfiles/rails_7.1.gemfile} +2 -2
- data/gemfiles/rails_7.2.gemfile +6 -0
- data/gemfiles/rails_8.0.gemfile +6 -0
- data/gemfiles/rails_head.gemfile +6 -0
- data/lib/ar_transaction_changes/version.rb +1 -1
- data/lib/ar_transaction_changes.rb +31 -9
- data/test/models/user.rb +7 -2
- data/test/transaction_changes_test.rb +1 -1
- metadata +16 -26
- data/Gemfile.rails6 +0 -6
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: c1ad6773a9205c5481c708ac6685c0f0609018fb0bc03845b57db109a32bd6b3
|
|
4
|
+
data.tar.gz: a4df65cd09d591fefb68fa9c3b1ccf311fbffcafb42e7ac7192622d747e05d49
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f51346e32137f229013ccaf2f201e6d2ec2c60a806fb92f452818c1cf8d553a13f45744d17b0a0b8bff33496455611451443aa81f7f780826fa4b546fb91394e
|
|
7
|
+
data.tar.gz: 4c7200f2d0dcbe341fda292fe71a916dd072c52a617c992c5140abb203765d4ce1b456efa67a20bf8ba3c310ea1038c90486424fce9b6e1844c91920c5910fbf
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
|
|
2
|
+
// README at: https://github.com/devcontainers/templates/tree/main/src/ruby
|
|
3
|
+
{
|
|
4
|
+
"name": "Ruby",
|
|
5
|
+
// Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile
|
|
6
|
+
"image": "ghcr.io/rails/devcontainer/images/ruby:3.4.7",
|
|
7
|
+
"features": {
|
|
8
|
+
"ghcr.io/devcontainers/features/github-cli:1": {},
|
|
9
|
+
"ghcr.io/rails/devcontainer/features/mysql-client:1": {}
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
// Features to add to the dev container. More info: https://containers.dev/features.
|
|
13
|
+
// "features": {},
|
|
14
|
+
|
|
15
|
+
// Use 'forwardPorts' to make a list of ports inside the container available locally.
|
|
16
|
+
// "forwardPorts": [],
|
|
17
|
+
|
|
18
|
+
// Use 'postCreateCommand' to run commands after the container is created.
|
|
19
|
+
// "postCreateCommand": "ruby --version",
|
|
20
|
+
|
|
21
|
+
// Configure tool-specific properties.
|
|
22
|
+
// "customizations": {},
|
|
23
|
+
|
|
24
|
+
// Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
|
|
25
|
+
// "remoteUser": "root"
|
|
26
|
+
}
|
data/.github/workflows/ci.yml
CHANGED
|
@@ -6,28 +6,51 @@ on:
|
|
|
6
6
|
types: [opened, synchronize]
|
|
7
7
|
|
|
8
8
|
jobs:
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
test:
|
|
10
|
+
runs-on: ubuntu-latest
|
|
11
|
+
|
|
12
|
+
strategy:
|
|
13
|
+
fail-fast: false
|
|
14
|
+
matrix:
|
|
15
|
+
ruby: ['3.2', '3.3', '3.4']
|
|
16
|
+
rails: ['7.0', '7.1', '7.2', '8.0']
|
|
17
|
+
exclude:
|
|
18
|
+
# Rails 7.0 requires Ruby < 3.4
|
|
19
|
+
- ruby: '3.4'
|
|
20
|
+
rails: '7.0'
|
|
21
|
+
|
|
22
|
+
name: Ruby ${{ matrix.ruby }} / Rails ${{ matrix.rails }}
|
|
23
|
+
|
|
24
|
+
env:
|
|
25
|
+
BUNDLE_GEMFILE: gemfiles/rails_${{ matrix.rails }}.gemfile
|
|
11
26
|
|
|
27
|
+
steps:
|
|
28
|
+
- name: Install required packages
|
|
29
|
+
run: |
|
|
30
|
+
sudo apt-get update
|
|
31
|
+
sudo apt-get -y install libsqlite3-dev
|
|
32
|
+
- uses: actions/checkout@v3
|
|
33
|
+
- name: Set up Ruby
|
|
34
|
+
uses: ruby/setup-ruby@v1
|
|
35
|
+
with:
|
|
36
|
+
ruby-version: ${{ matrix.ruby }}
|
|
37
|
+
bundler-cache: true
|
|
38
|
+
- name: Run tests
|
|
39
|
+
run: bundle exec rake
|
|
40
|
+
|
|
41
|
+
test-head:
|
|
12
42
|
runs-on: ubuntu-latest
|
|
43
|
+
continue-on-error: true
|
|
13
44
|
|
|
14
45
|
strategy:
|
|
46
|
+
fail-fast: false
|
|
15
47
|
matrix:
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
gemfile: Gemfile.rails6
|
|
20
|
-
- name: "Latest released versions"
|
|
21
|
-
ruby: 3.2
|
|
22
|
-
gemfile: Gemfile
|
|
23
|
-
- name: "Rails main branch"
|
|
24
|
-
ruby: 3.2
|
|
25
|
-
gemfile: Gemfile.rails_head
|
|
26
|
-
|
|
27
|
-
name: ${{ matrix.entry.name }}
|
|
48
|
+
ruby: ['3.2', '3.3', '3.4']
|
|
49
|
+
|
|
50
|
+
name: Ruby ${{ matrix.ruby }} / Rails head
|
|
28
51
|
|
|
29
52
|
env:
|
|
30
|
-
BUNDLE_GEMFILE:
|
|
53
|
+
BUNDLE_GEMFILE: gemfiles/rails_head.gemfile
|
|
31
54
|
|
|
32
55
|
steps:
|
|
33
56
|
- name: Install required packages
|
|
@@ -38,7 +61,28 @@ jobs:
|
|
|
38
61
|
- name: Set up Ruby
|
|
39
62
|
uses: ruby/setup-ruby@v1
|
|
40
63
|
with:
|
|
41
|
-
ruby-version: ${{ matrix.
|
|
64
|
+
ruby-version: ${{ matrix.ruby }}
|
|
42
65
|
bundler-cache: true
|
|
43
66
|
- name: Run tests
|
|
44
67
|
run: bundle exec rake
|
|
68
|
+
|
|
69
|
+
ci-summary:
|
|
70
|
+
runs-on: ubuntu-latest
|
|
71
|
+
needs: [test, test-head]
|
|
72
|
+
if: always()
|
|
73
|
+
|
|
74
|
+
name: CI Summary
|
|
75
|
+
|
|
76
|
+
steps:
|
|
77
|
+
- name: Check test results
|
|
78
|
+
run: |
|
|
79
|
+
if [ "${{ needs.test.result }}" != "success" ]; then
|
|
80
|
+
echo "❌ Required tests failed"
|
|
81
|
+
exit 1
|
|
82
|
+
fi
|
|
83
|
+
echo "✅ All required tests passed"
|
|
84
|
+
if [ "${{ needs.test-head.result }}" != "success" ]; then
|
|
85
|
+
echo "⚠️ Rails head tests failed (non-blocking)"
|
|
86
|
+
else
|
|
87
|
+
echo "✅ Rails head tests passed"
|
|
88
|
+
fi
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
name: Release Gem
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
release:
|
|
5
|
+
types: [published]
|
|
6
|
+
|
|
7
|
+
jobs:
|
|
8
|
+
release:
|
|
9
|
+
permissions:
|
|
10
|
+
contents: write
|
|
11
|
+
id-token: write
|
|
12
|
+
|
|
13
|
+
environment: release
|
|
14
|
+
|
|
15
|
+
runs-on: ubuntu-latest
|
|
16
|
+
|
|
17
|
+
steps:
|
|
18
|
+
- uses: actions/checkout@v5
|
|
19
|
+
with:
|
|
20
|
+
persist-credentials: false
|
|
21
|
+
- name: Set up Ruby
|
|
22
|
+
uses: ruby/setup-ruby@v1
|
|
23
|
+
with:
|
|
24
|
+
bundler-cache: true
|
|
25
|
+
ruby-version: ruby
|
|
26
|
+
- uses: rubygems/release-gem@v1
|
data/Gemfile
CHANGED
data/LICENSE.txt
CHANGED
|
@@ -6,20 +6,21 @@ require 'ar_transaction_changes/version'
|
|
|
6
6
|
Gem::Specification.new do |gem|
|
|
7
7
|
gem.name = "ar_transaction_changes"
|
|
8
8
|
gem.version = ArTransactionChanges::VERSION
|
|
9
|
-
gem.authors = ["Dylan Thacker-Smith"]
|
|
10
|
-
gem.email = ["Dylan.Smith@shopify.com"]
|
|
9
|
+
gem.authors = ["Dylan Thacker-Smith", "Shopify's Rails Infrastructure Team"]
|
|
10
|
+
gem.email = ["Dylan.Smith@shopify.com", "rails@shopify.com"]
|
|
11
11
|
gem.description = %q{Solves the problem of trying to get all the changes to an object during a transaction in an after_commit callbacks.}
|
|
12
12
|
gem.summary = %q{Store transaction changes for active record objects}
|
|
13
|
-
gem.homepage = "https://github.com/
|
|
13
|
+
gem.homepage = "https://github.com/Shopify/ar_transaction_changes"
|
|
14
14
|
gem.license = "MIT"
|
|
15
15
|
|
|
16
|
+
gem.required_ruby_version = ">= 3.2"
|
|
17
|
+
|
|
16
18
|
gem.files = `git ls-files`.split($/)
|
|
17
19
|
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
|
18
20
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
|
19
21
|
gem.require_paths = ["lib"]
|
|
20
22
|
|
|
21
|
-
gem.add_dependency "activerecord", ">=
|
|
23
|
+
gem.add_dependency "activerecord", ">= 7.0.0"
|
|
22
24
|
|
|
23
25
|
gem.add_development_dependency("rake")
|
|
24
|
-
gem.add_development_dependency("mysql2")
|
|
25
26
|
end
|
|
@@ -4,16 +4,38 @@ require "ar_transaction_changes/version"
|
|
|
4
4
|
require "active_record"
|
|
5
5
|
|
|
6
6
|
module ArTransactionChanges
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
7
|
+
if ActiveRecord.version >= Gem::Version.new('7.1')
|
|
8
|
+
def run_callbacks(kind, type = nil)
|
|
9
|
+
super
|
|
10
|
+
ensure
|
|
11
|
+
if kind == :commit || kind == :rollback
|
|
12
|
+
@transaction_changed_attributes = nil
|
|
13
|
+
end
|
|
14
|
+
end
|
|
12
15
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
16
|
+
if ActiveRecord.version >= Gem::Version.new('8.1.0.alpha')
|
|
17
|
+
# We should reset @transaction_changed_attributes in the no-op version of the method.
|
|
18
|
+
# Even if there are no callbacks registered, attributes should be reset on commit/rollback.
|
|
19
|
+
def _run_commit_callbacks
|
|
20
|
+
super
|
|
21
|
+
ensure
|
|
22
|
+
@transaction_changed_attributes = nil
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def _run_rollback_callbacks
|
|
26
|
+
super
|
|
27
|
+
ensure
|
|
28
|
+
@transaction_changed_attributes = nil
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
else
|
|
32
|
+
def run_callbacks(kind)
|
|
33
|
+
super
|
|
34
|
+
ensure
|
|
35
|
+
if kind == :commit || kind == :rollback
|
|
36
|
+
@transaction_changed_attributes = nil
|
|
37
|
+
end
|
|
38
|
+
end
|
|
17
39
|
end
|
|
18
40
|
|
|
19
41
|
def transaction_changed_attributes
|
data/test/models/user.rb
CHANGED
|
@@ -9,8 +9,13 @@ class User < ActiveRecord::Base
|
|
|
9
9
|
end
|
|
10
10
|
end
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
if ActiveRecord.gem_version >= Gem::Version.new('7.1.0')
|
|
13
|
+
serialize :connection_details, type: Array
|
|
14
|
+
serialize :notes, type: Array
|
|
15
|
+
else
|
|
16
|
+
serialize :connection_details, Array
|
|
17
|
+
serialize :notes, Array
|
|
18
|
+
end
|
|
14
19
|
|
|
15
20
|
attr_accessor :stored_transaction_changes
|
|
16
21
|
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: ar_transaction_changes
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.1.
|
|
4
|
+
version: 1.1.11
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Dylan Thacker-Smith
|
|
8
|
-
|
|
8
|
+
- Shopify's Rails Infrastructure Team
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: activerecord
|
|
@@ -16,14 +16,14 @@ dependencies:
|
|
|
16
16
|
requirements:
|
|
17
17
|
- - ">="
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version:
|
|
19
|
+
version: 7.0.0
|
|
20
20
|
type: :runtime
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
24
|
- - ">="
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
|
-
version:
|
|
26
|
+
version: 7.0.0
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
28
|
name: rake
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -38,48 +38,39 @@ dependencies:
|
|
|
38
38
|
- - ">="
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
40
|
version: '0'
|
|
41
|
-
- !ruby/object:Gem::Dependency
|
|
42
|
-
name: mysql2
|
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
|
44
|
-
requirements:
|
|
45
|
-
- - ">="
|
|
46
|
-
- !ruby/object:Gem::Version
|
|
47
|
-
version: '0'
|
|
48
|
-
type: :development
|
|
49
|
-
prerelease: false
|
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
-
requirements:
|
|
52
|
-
- - ">="
|
|
53
|
-
- !ruby/object:Gem::Version
|
|
54
|
-
version: '0'
|
|
55
41
|
description: Solves the problem of trying to get all the changes to an object during
|
|
56
42
|
a transaction in an after_commit callbacks.
|
|
57
43
|
email:
|
|
58
44
|
- Dylan.Smith@shopify.com
|
|
45
|
+
- rails@shopify.com
|
|
59
46
|
executables: []
|
|
60
47
|
extensions: []
|
|
61
48
|
extra_rdoc_files: []
|
|
62
49
|
files:
|
|
50
|
+
- ".devcontainer/devcontainer.json"
|
|
63
51
|
- ".github/workflows/ci.yml"
|
|
52
|
+
- ".github/workflows/release.yml"
|
|
64
53
|
- ".gitignore"
|
|
65
54
|
- Gemfile
|
|
66
|
-
- Gemfile.rails6
|
|
67
|
-
- Gemfile.rails_head
|
|
68
55
|
- LICENSE.txt
|
|
69
56
|
- README.md
|
|
70
57
|
- Rakefile
|
|
71
58
|
- ar_transaction_changes.gemspec
|
|
59
|
+
- gemfiles/rails_7.0.gemfile
|
|
60
|
+
- gemfiles/rails_7.1.gemfile
|
|
61
|
+
- gemfiles/rails_7.2.gemfile
|
|
62
|
+
- gemfiles/rails_8.0.gemfile
|
|
63
|
+
- gemfiles/rails_head.gemfile
|
|
72
64
|
- lib/ar_transaction_changes.rb
|
|
73
65
|
- lib/ar_transaction_changes/version.rb
|
|
74
66
|
- test/database.yml.default
|
|
75
67
|
- test/models/user.rb
|
|
76
68
|
- test/test_helper.rb
|
|
77
69
|
- test/transaction_changes_test.rb
|
|
78
|
-
homepage: https://github.com/
|
|
70
|
+
homepage: https://github.com/Shopify/ar_transaction_changes
|
|
79
71
|
licenses:
|
|
80
72
|
- MIT
|
|
81
73
|
metadata: {}
|
|
82
|
-
post_install_message:
|
|
83
74
|
rdoc_options: []
|
|
84
75
|
require_paths:
|
|
85
76
|
- lib
|
|
@@ -87,15 +78,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
87
78
|
requirements:
|
|
88
79
|
- - ">="
|
|
89
80
|
- !ruby/object:Gem::Version
|
|
90
|
-
version: '
|
|
81
|
+
version: '3.2'
|
|
91
82
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
92
83
|
requirements:
|
|
93
84
|
- - ">="
|
|
94
85
|
- !ruby/object:Gem::Version
|
|
95
86
|
version: '0'
|
|
96
87
|
requirements: []
|
|
97
|
-
rubygems_version: 3.
|
|
98
|
-
signing_key:
|
|
88
|
+
rubygems_version: 3.6.9
|
|
99
89
|
specification_version: 4
|
|
100
90
|
summary: Store transaction changes for active record objects
|
|
101
91
|
test_files:
|