with_transactional_lock 2.0.1 → 2.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e1ce902a567cad70abdbda27991f1237e06c41a2bf7c28c85d48560ecb01ccb5
4
- data.tar.gz: '018ee632496ea69c1cb860a22143415105321a0150cd87cf975e585f2c3b2e99'
3
+ metadata.gz: 5e23e87e0f583421cd8059c2357cb938189754803f981411f6dac9111ba128df
4
+ data.tar.gz: 7294f251168099acfad4122609c6a0d5b2debb17edb6a66ebc65e5ea87f1efdb
5
5
  SHA512:
6
- metadata.gz: 5817b5fde890a9f9ca5bf8857bbc01fa6f540ed12394b472cd1a743f9441faee31cb829d570f9ab0f6b352f3f751c3c4a774b941eb492939a3caf41ad5ee793d
7
- data.tar.gz: 4a3a791d02758d6fe27ad4d7bc64282e50b5a0dd3e3711197bb89d2e5566adb3ee6f3013b5809a7489aa6c72c27d1045e12a2ee23d35ba433e45985519004622
6
+ metadata.gz: 1e4984a3ea1ceda7c6a163b99eff34f6364ab37038da8a26e15ed01d5527a8775ac70b33db4c6dcbb8a8385528a62bdadb39a2983e05036a269f630a94b72338
7
+ data.tar.gz: 7f1a85d1c4372eaee6406cb95a8c3c7b45bd35b8ac3248d321c212e06b37f033a4628a4d29ce358d6fcef200e90a671405c9537b3bcf791f0f56f3d787aa5a0b
data/README.md CHANGED
@@ -1,7 +1,5 @@
1
1
  # with_transactional_lock
2
2
 
3
- [![Build Status](https://travis-ci.com/Betterment/with_transactional_lock.svg?token=6b6DErRMUHX47kEoBZ3t&branch=master)](https://travis-ci.com/Betterment/with_transactional_lock)
4
-
5
3
  A simple extension to ActiveRecord for performing advisory locking on
6
4
  MySQL and PostgreSQL.
7
5
 
@@ -102,12 +100,6 @@ with the name that you provided. Your block is free to execute its
102
100
  critical work. Upon completion of your transaction, the lock will be
103
101
  released.
104
102
 
105
- ### Publishing the gem
106
-
107
- If you make changes to this gem, you will need to publish the changes to a new version on Github Packages, where the private Betterment RubyGems registry is.
108
-
109
- For instructions on how to publish this gem, read this article on ["Publishing Internal Gems" from the Betterment Engineering Wiki](https://betterconfluence.atlassian.net/wiki/spaces/BetterEng/pages/2840952833/Publishing+Internal+Gems).
110
-
111
103
  ## Supported databases
112
104
 
113
105
  ### PostgreSQL
data/Rakefile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  begin
2
4
  require 'bundler/setup'
3
5
  rescue LoadError
@@ -30,12 +32,13 @@ if (Rails.env.development? || Rails.env.test?) && defined? Dummy
30
32
 
31
33
  task(:default).clear
32
34
  if ENV['APPRAISAL_INITIALIZED'] || ENV['CI']
35
+ tasks = [:spec]
33
36
  tasks += [:rubocop] unless ENV['CI']
34
37
 
35
- task default: tasks
38
+ task default: tasks # rubocop:disable Rake/DuplicateTask
36
39
  else
37
40
  require 'appraisal'
38
41
  Appraisal::Task.new
39
- task default: :appraisal
42
+ task default: :appraisal # rubocop:disable Rake/DuplicateTask
40
43
  end
41
44
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails/generators/base'
2
4
  require 'rails/generators/active_record'
3
5
 
@@ -27,7 +29,7 @@ module WithTransactionalLock
27
29
  private
28
30
 
29
31
  def mysql?
30
- ActiveRecord::Base.connection.adapter_name.downcase =~ /mysql/
32
+ ActiveRecord::Base.connection.adapter_name.downcase.include?('mysql')
31
33
  end
32
34
  end
33
35
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class CreateTransactionalAdvisoryLocks < ActiveRecord::Migration
2
4
  def change
3
5
  create_table :transactional_advisory_locks, id: false do |t|
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module WithTransactionalLock
2
4
  class Engine < ::Rails::Engine
3
5
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'active_support/concern'
2
4
 
3
5
  module WithTransactionalLock
@@ -6,8 +8,8 @@ module WithTransactionalLock
6
8
  delegate :with_transactional_lock, to: :class
7
9
 
8
10
  module ClassMethods
9
- def with_transactional_lock(lock_name, &block)
10
- _advisory_lock_class.new(connection, lock_name).yield_with_lock(&block)
11
+ def with_transactional_lock(lock_name, &)
12
+ _advisory_lock_class.new(connection, lock_name).yield_with_lock(&)
11
13
  end
12
14
 
13
15
  private
@@ -21,12 +23,12 @@ module WithTransactionalLock
21
23
  def self.locate(connection)
22
24
  adapter = connection.adapter_name.downcase.to_sym
23
25
  case adapter
24
- when :mysql, :mysql2
25
- MySqlAdvisoryLock
26
- when :postgresql
27
- PostgresAdvisoryLock
28
- else
29
- raise "adapter not supported: #{adapter}"
26
+ when :mysql, :mysql2
27
+ MySqlAdvisoryLock
28
+ when :postgresql
29
+ PostgresAdvisoryLock
30
+ else
31
+ raise "adapter not supported: #{adapter}"
30
32
  end
31
33
  end
32
34
  end
@@ -57,7 +59,8 @@ module WithTransactionalLock
57
59
  private
58
60
 
59
61
  def acquire_lock
60
- connection.execute("insert into transactional_advisory_locks values (#{connection.quote(db_lock_name)}) on duplicate key update lock_id = lock_id")
62
+ connection.execute("insert into transactional_advisory_locks values (#{connection.quote(db_lock_name)}) \
63
+ on duplicate key update lock_id = lock_id")
61
64
  end
62
65
  end
63
66
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module WithTransactionalLock
2
4
  class MySqlHelper
3
5
  def self.cleanup(klass = ActiveRecord::Base)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module WithTransactionalLock
2
- VERSION = "2.0.1"
4
+ VERSION = "2.3.0"
3
5
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "with_transactional_lock/engine"
2
4
 
3
5
  module WithTransactionalLock
@@ -6,6 +8,4 @@ module WithTransactionalLock
6
8
  autoload :MySqlHelper
7
9
  end
8
10
 
9
- ActiveSupport.on_load :active_record do
10
- ActiveRecord::Base.include WithTransactionalLock::Mixin
11
- end
11
+ ActiveSupport.on_load(:active_record) { include WithTransactionalLock::Mixin }
metadata CHANGED
@@ -1,65 +1,71 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: with_transactional_lock
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.1
4
+ version: 2.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sam Moore
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-06-12 00:00:00.000000000 Z
11
+ date: 2024-11-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: rails
14
+ name: activerecord
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '6.0'
19
+ version: '7.0'
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
- version: '7.1'
22
+ version: '7.2'
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - ">="
28
28
  - !ruby/object:Gem::Version
29
- version: '6.0'
29
+ version: '7.0'
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
- version: '7.1'
32
+ version: '7.2'
33
33
  - !ruby/object:Gem::Dependency
34
- name: appraisal
34
+ name: railties
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
- - - "~>"
37
+ - - ">="
38
38
  - !ruby/object:Gem::Version
39
- version: 2.2.0
40
- type: :development
39
+ version: '7.0'
40
+ - - "<"
41
+ - !ruby/object:Gem::Version
42
+ version: '7.2'
43
+ type: :runtime
41
44
  prerelease: false
42
45
  version_requirements: !ruby/object:Gem::Requirement
43
46
  requirements:
44
- - - "~>"
47
+ - - ">="
45
48
  - !ruby/object:Gem::Version
46
- version: 2.2.0
49
+ version: '7.0'
50
+ - - "<"
51
+ - !ruby/object:Gem::Version
52
+ version: '7.2'
47
53
  - !ruby/object:Gem::Dependency
48
- name: betterlint
54
+ name: appraisal
49
55
  requirement: !ruby/object:Gem::Requirement
50
56
  requirements:
51
- - - ">="
57
+ - - "~>"
52
58
  - !ruby/object:Gem::Version
53
- version: '0'
59
+ version: 2.2.0
54
60
  type: :development
55
61
  prerelease: false
56
62
  version_requirements: !ruby/object:Gem::Requirement
57
63
  requirements:
58
- - - ">="
64
+ - - "~>"
59
65
  - !ruby/object:Gem::Version
60
- version: '0'
66
+ version: 2.2.0
61
67
  - !ruby/object:Gem::Dependency
62
- name: database_cleaner
68
+ name: betterlint
63
69
  requirement: !ruby/object:Gem::Requirement
64
70
  requirements:
65
71
  - - ">="
@@ -73,7 +79,7 @@ dependencies:
73
79
  - !ruby/object:Gem::Version
74
80
  version: '0'
75
81
  - !ruby/object:Gem::Dependency
76
- name: mime-types
82
+ name: database_cleaner
77
83
  requirement: !ruby/object:Gem::Requirement
78
84
  requirements:
79
85
  - - ">="
@@ -116,20 +122,6 @@ dependencies:
116
122
  version: '0'
117
123
  - !ruby/object:Gem::Dependency
118
124
  name: rspec-rails
119
- requirement: !ruby/object:Gem::Requirement
120
- requirements:
121
- - - "~>"
122
- - !ruby/object:Gem::Version
123
- version: '3.1'
124
- type: :development
125
- prerelease: false
126
- version_requirements: !ruby/object:Gem::Requirement
127
- requirements:
128
- - - "~>"
129
- - !ruby/object:Gem::Version
130
- version: '3.1'
131
- - !ruby/object:Gem::Dependency
132
- name: rspec-retry
133
125
  requirement: !ruby/object:Gem::Requirement
134
126
  requirements:
135
127
  - - ">="
@@ -143,21 +135,7 @@ dependencies:
143
135
  - !ruby/object:Gem::Version
144
136
  version: '0'
145
137
  - !ruby/object:Gem::Dependency
146
- name: sprockets
147
- requirement: !ruby/object:Gem::Requirement
148
- requirements:
149
- - - "~>"
150
- - !ruby/object:Gem::Version
151
- version: '3.0'
152
- type: :development
153
- prerelease: false
154
- version_requirements: !ruby/object:Gem::Requirement
155
- requirements:
156
- - - "~>"
157
- - !ruby/object:Gem::Version
158
- version: '3.0'
159
- - !ruby/object:Gem::Dependency
160
- name: travis
138
+ name: rspec-retry
161
139
  requirement: !ruby/object:Gem::Requirement
162
140
  requirements:
163
141
  - - ">="
@@ -183,7 +161,6 @@ files:
183
161
  - lib/generators/with_transactional_lock/install/install_generator.rb
184
162
  - lib/generators/with_transactional_lock/install/templates/README
185
163
  - lib/generators/with_transactional_lock/install/templates/db/migrate/create_transactional_advisory_locks.rb
186
- - lib/tasks/with_transactional_lock_tasks.rake
187
164
  - lib/with_transactional_lock.rb
188
165
  - lib/with_transactional_lock/engine.rb
189
166
  - lib/with_transactional_lock/mixin.rb
@@ -192,7 +169,9 @@ files:
192
169
  homepage: https://github.com/Betterment/with_transactional_lock
193
170
  licenses:
194
171
  - MIT
195
- metadata: {}
172
+ metadata:
173
+ allowed_push_host: https://rubygems.org
174
+ rubygems_mfa_required: 'true'
196
175
  post_install_message:
197
176
  rdoc_options: []
198
177
  require_paths:
@@ -201,14 +180,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
201
180
  requirements:
202
181
  - - ">="
203
182
  - !ruby/object:Gem::Version
204
- version: '0'
183
+ version: '3.2'
205
184
  required_rubygems_version: !ruby/object:Gem::Requirement
206
185
  requirements:
207
186
  - - ">="
208
187
  - !ruby/object:Gem::Version
209
188
  version: '0'
210
189
  requirements: []
211
- rubygems_version: 3.4.13
190
+ rubygems_version: 3.5.23
212
191
  signing_key:
213
192
  specification_version: 4
214
193
  summary: Transactional advisory locks for ActiveRecord
@@ -1,4 +0,0 @@
1
- # desc "Explaining what the task does"
2
- # task :with_transactional_lock do
3
- # # Task goes here
4
- # end