mongoid-locker 2.0.0 → 2.0.2
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/.github/workflows/test.yml +71 -0
- data/.rubocop.yml +22 -0
- data/.rubocop_todo.yml +28 -27
- data/.travis.yml +6 -38
- data/CHANGELOG.md +21 -7
- data/Gemfile +6 -3
- data/README.md +10 -8
- data/RELEASING.md +1 -1
- data/lib/mongoid/locker/errors.rb +1 -1
- data/lib/mongoid/locker/version.rb +1 -1
- data/lib/mongoid/locker.rb +6 -6
- data/mongoid-locker.gemspec +1 -1
- metadata +6 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 81cc5f3f7114bc807ad56afade38745fb74d2d4ed45eb007a12b0e61a0237450
|
4
|
+
data.tar.gz: 81ba6e72064c31a302ffcbfd0a6df6c555051057d2b8890b696ef3b62d033baa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 75b674da45761991d07da697139454f53864327d9b3f0a73b20e5d5a278f1faabce95430c3cfc7e06ff2597a5be4acccb4c714b66d2ec17b0b93ef270c934a5e
|
7
|
+
data.tar.gz: 402ab3c14985c52c65b4440c7b763d8b59ccf1f9e33cd97b7324f237353443edd96e9134031ee15735213ed1d19cf8865151f05a0e32dd12d8ce43f3c3e4f04e
|
@@ -0,0 +1,71 @@
|
|
1
|
+
name: Test
|
2
|
+
|
3
|
+
on: [push, pull_request]
|
4
|
+
|
5
|
+
jobs:
|
6
|
+
test:
|
7
|
+
|
8
|
+
strategy:
|
9
|
+
fail-fast: false
|
10
|
+
matrix:
|
11
|
+
entry:
|
12
|
+
- { ruby: '2.6.6', mongo: 'mongo:4.4', mongoid: '5' }
|
13
|
+
- { ruby: 'jruby-9.1.17.0', mongo: 'mongo:4.4', mongoid: '5' }
|
14
|
+
- { ruby: 'jruby-9.2.11.1', mongo: 'mongo:4.4', mongoid: '5' }
|
15
|
+
- { ruby: '2.6.6', mongo: 'mongo:4.4', mongoid: '6' }
|
16
|
+
- { ruby: '2.7.1', mongo: 'mongo:4.4', mongoid: '6' }
|
17
|
+
- { ruby: '3.0.5', mongo: 'mongo:4.4', mongoid: '6' }
|
18
|
+
- { ruby: '3.1.3', mongo: 'mongo:4.4', mongoid: '6' }
|
19
|
+
- { ruby: 'jruby-9.2.11.1', mongo: 'mongo:4.4', mongoid: '6' }
|
20
|
+
- { ruby: '2.6.6', mongo: 'mongo:4.4', mongoid: '7', coverage: 'true' }
|
21
|
+
- { ruby: '2.7.1', mongo: 'mongo:4.4', mongoid: '7' }
|
22
|
+
- { ruby: '3.0.5', mongo: 'mongo:4.4', mongoid: '7' }
|
23
|
+
- { ruby: '3.1.3', mongo: 'mongo:4.4', mongoid: '7' }
|
24
|
+
- { ruby: 'jruby-9.2.11.1', mongo: 'mongo:4.4', mongoid: '7' }
|
25
|
+
- { ruby: '2.6.6', mongo: 'mongo:4.4', mongoid: '8' }
|
26
|
+
- { ruby: '2.7.1', mongo: 'mongo:4.4', mongoid: '8' }
|
27
|
+
- { ruby: '3.0.5', mongo: 'mongo:4.4', mongoid: '8' }
|
28
|
+
- { ruby: '3.1.3', mongo: 'mongo:4.4', mongoid: '8' }
|
29
|
+
experimental: [false]
|
30
|
+
|
31
|
+
name: test (ruby=${{ matrix.entry.ruby }}, mongo=${{ matrix.entry.mongo }}, mongoid=${{ matrix.entry.mongoid }})
|
32
|
+
runs-on: ubuntu-latest
|
33
|
+
|
34
|
+
continue-on-error: ${{ matrix.experimental }}
|
35
|
+
|
36
|
+
services:
|
37
|
+
mongo:
|
38
|
+
image: ${{ matrix.entry.mongo }}
|
39
|
+
ports: ["27017:27017"]
|
40
|
+
|
41
|
+
env:
|
42
|
+
MONGOID_VERSION: ${{ matrix.entry.mongoid }}
|
43
|
+
COVERAGE: ${{ matrix.entry.coverage }}
|
44
|
+
|
45
|
+
steps:
|
46
|
+
- uses: actions/checkout@v2
|
47
|
+
|
48
|
+
- name: Set up Ruby
|
49
|
+
uses: ruby/setup-ruby@v1
|
50
|
+
with:
|
51
|
+
ruby-version: ${{ matrix.entry.ruby }}
|
52
|
+
bundler-cache: true
|
53
|
+
|
54
|
+
- name: Checks
|
55
|
+
if: ${{ matrix.entry.coverage == 'true' }}
|
56
|
+
run: |
|
57
|
+
bundle exec rubocop
|
58
|
+
# Disabled until mongoid-danger is updated to support Github Actions
|
59
|
+
# bundle exec danger
|
60
|
+
|
61
|
+
- name: Run tests
|
62
|
+
run: bundle exec rspec
|
63
|
+
|
64
|
+
- name: Code Climate
|
65
|
+
if: ${{ env.CC_TEST_REPORTER_ID != '' && success() && matrix.entry.coverage == 'true' }}
|
66
|
+
run: |
|
67
|
+
curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter;
|
68
|
+
chmod +x ./cc-test-reporter;
|
69
|
+
./cc-test-reporter before-build;
|
70
|
+
./cc-test-reporter format-coverage -t simplecov -o coverage/codeclimate.json coverage/.resultset.json;
|
71
|
+
./cc-test-reporter upload-coverage;
|
data/.rubocop.yml
CHANGED
@@ -1,2 +1,24 @@
|
|
1
|
+
Lint/RaiseException:
|
2
|
+
Enabled: true
|
3
|
+
|
4
|
+
Lint/StructNewOverride:
|
5
|
+
Enabled: true
|
6
|
+
|
7
|
+
Style/HashEachMethods:
|
8
|
+
Enabled: true
|
9
|
+
|
10
|
+
Style/HashTransformKeys:
|
11
|
+
Enabled: true
|
12
|
+
|
13
|
+
Style/HashTransformValues:
|
14
|
+
Enabled: true
|
15
|
+
|
16
|
+
RSpec/MultipleExpectations:
|
17
|
+
Enabled: false
|
18
|
+
|
19
|
+
RSpec/LeakyConstantDeclaration:
|
20
|
+
Enabled: false
|
21
|
+
|
1
22
|
inherit_from: .rubocop_todo.yml
|
23
|
+
|
2
24
|
require: rubocop-rspec
|
data/.rubocop_todo.yml
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# This configuration was generated by
|
2
2
|
# `rubocop --auto-gen-config`
|
3
|
-
# on
|
3
|
+
# on 2020-04-07 15:05:45 -0400 using RuboCop version 0.81.0.
|
4
4
|
# The point is for the user to remove these configuration records
|
5
5
|
# one by one as the offenses are removed from the code base.
|
6
6
|
# Note that changes in the inspected code, or installation of new
|
@@ -14,14 +14,15 @@ Bundler/DuplicatedGem:
|
|
14
14
|
- 'Gemfile'
|
15
15
|
|
16
16
|
# Offense count: 4
|
17
|
+
# Configuration parameters: IgnoredMethods.
|
17
18
|
Metrics/AbcSize:
|
18
|
-
Max:
|
19
|
+
Max: 24
|
19
20
|
|
20
|
-
# Offense count:
|
21
|
+
# Offense count: 11
|
21
22
|
# Configuration parameters: CountComments, ExcludedMethods.
|
22
23
|
# ExcludedMethods: refine
|
23
24
|
Metrics/BlockLength:
|
24
|
-
Max:
|
25
|
+
Max: 290
|
25
26
|
|
26
27
|
# Offense count: 5
|
27
28
|
# Configuration parameters: CountComments, ExcludedMethods.
|
@@ -31,7 +32,7 @@ Metrics/MethodLength:
|
|
31
32
|
# Offense count: 1
|
32
33
|
# Configuration parameters: CountComments.
|
33
34
|
Metrics/ModuleLength:
|
34
|
-
Max:
|
35
|
+
Max: 105
|
35
36
|
|
36
37
|
# Offense count: 2
|
37
38
|
# Configuration parameters: ExpectMatchingDefinition, Regex, IgnoreExecutableScripts, AllowedAcronyms.
|
@@ -42,30 +43,35 @@ Naming/FileName:
|
|
42
43
|
- 'spec/mongoid-locker_spec.rb'
|
43
44
|
|
44
45
|
# Offense count: 1
|
45
|
-
# Configuration parameters: NamePrefix,
|
46
|
+
# Configuration parameters: NamePrefix, ForbiddenPrefixes, AllowedMethods, MethodDefinitionMacros.
|
46
47
|
# NamePrefix: is_, has_, have_
|
47
|
-
#
|
48
|
-
#
|
48
|
+
# ForbiddenPrefixes: is_, has_, have_
|
49
|
+
# AllowedMethods: is_a?
|
49
50
|
# MethodDefinitionMacros: define_method, define_singleton_method
|
50
51
|
Naming/PredicateName:
|
51
52
|
Exclude:
|
52
53
|
- 'spec/**/*'
|
53
54
|
- 'lib/mongoid/locker.rb'
|
54
55
|
|
55
|
-
# Offense count:
|
56
|
-
|
57
|
-
|
58
|
-
|
56
|
+
# Offense count: 2
|
57
|
+
RSpec/BeforeAfterAll:
|
58
|
+
Exclude:
|
59
|
+
- 'spec/spec_helper.rb'
|
60
|
+
- 'spec/rails_helper.rb'
|
61
|
+
- 'spec/support/**/*.rb'
|
62
|
+
- 'spec/test_examples_spec.rb'
|
63
|
+
|
64
|
+
# Offense count: 1
|
65
|
+
RSpec/DescribeClass:
|
59
66
|
Exclude:
|
60
|
-
- 'spec/
|
61
|
-
- 'spec/support/populate_database_shared_context.rb'
|
62
|
-
- 'spec/support/reset_shared_context.rb'
|
67
|
+
- 'spec/test_examples_spec.rb'
|
63
68
|
|
64
|
-
# Offense count:
|
69
|
+
# Offense count: 8
|
65
70
|
# Configuration parameters: Max.
|
66
71
|
RSpec/ExampleLength:
|
67
72
|
Exclude:
|
68
73
|
- 'spec/support/locker_is_included_shared_examples.rb'
|
74
|
+
- 'spec/test_examples_spec.rb'
|
69
75
|
|
70
76
|
# Offense count: 1
|
71
77
|
# Configuration parameters: CustomTransform, IgnoreMethods.
|
@@ -73,21 +79,16 @@ RSpec/FilePath:
|
|
73
79
|
Exclude:
|
74
80
|
- 'spec/mongoid-locker_spec.rb'
|
75
81
|
|
76
|
-
# Offense count: 5
|
77
|
-
RSpec/LeakyConstantDeclaration:
|
78
|
-
Exclude:
|
79
|
-
- 'spec/support/configurations_shared_context.rb'
|
80
|
-
|
81
82
|
# Offense count: 12
|
82
83
|
# Configuration parameters: .
|
83
84
|
# SupportedStyles: have_received, receive
|
84
85
|
RSpec/MessageSpies:
|
85
86
|
EnforcedStyle: receive
|
86
87
|
|
87
|
-
# Offense count:
|
88
|
-
|
89
|
-
|
90
|
-
|
88
|
+
# Offense count: 1
|
89
|
+
RSpec/SubjectStub:
|
90
|
+
Exclude:
|
91
|
+
- 'spec/support/delegated_methods_shared_examples.rb'
|
91
92
|
|
92
93
|
# Offense count: 2
|
93
94
|
Style/Documentation:
|
@@ -105,9 +106,9 @@ Style/NumericPredicate:
|
|
105
106
|
- 'spec/**/*'
|
106
107
|
- 'lib/mongoid/locker.rb'
|
107
108
|
|
108
|
-
# Offense count:
|
109
|
+
# Offense count: 35
|
109
110
|
# Cop supports --auto-correct.
|
110
111
|
# Configuration parameters: AutoCorrect, AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, IgnoredPatterns.
|
111
112
|
# URISchemes: http, https
|
112
|
-
|
113
|
+
Layout/LineLength:
|
113
114
|
Max: 250
|
data/.travis.yml
CHANGED
@@ -1,48 +1,16 @@
|
|
1
|
-
services:
|
2
|
-
- mongodb
|
3
|
-
|
4
1
|
language: ruby
|
5
2
|
|
6
3
|
cache: bundler
|
7
4
|
|
8
|
-
script:
|
9
|
-
- bundle exec rspec
|
10
|
-
|
11
5
|
rvm:
|
12
|
-
- 2.
|
13
|
-
- 2.4.5
|
14
|
-
- 2.5.4
|
15
|
-
- 2.6.2
|
16
|
-
- jruby-9.1.17.0
|
17
|
-
- jruby-9.2.6.0
|
6
|
+
- 2.6.6
|
18
7
|
|
19
8
|
env:
|
20
|
-
- MONGOID_VERSION=5
|
21
|
-
- MONGOID_VERSION=6
|
22
9
|
- MONGOID_VERSION=7
|
23
10
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
- COVERAGE=true
|
30
|
-
before_script:
|
31
|
-
- bundle exec rubocop
|
32
|
-
- bundle exec danger
|
33
|
-
after_script:
|
34
|
-
- if [[ "$TRAVIS_TEST_RESULT" == 0 ]]; then
|
35
|
-
curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter;
|
36
|
-
chmod +x ./cc-test-reporter;
|
37
|
-
./cc-test-reporter before-build;
|
38
|
-
./cc-test-reporter format-coverage -t simplecov -o coverage/codeclimate.json coverage/.resultset.json;
|
39
|
-
./cc-test-reporter upload-coverage;
|
40
|
-
fi
|
41
|
-
- rvm: ruby-head
|
42
|
-
- rvm: jruby-head
|
43
|
-
fast_finish: true
|
44
|
-
allow_failures:
|
45
|
-
- rvm: ruby-head
|
46
|
-
- rvm: jruby-head
|
11
|
+
before_script:
|
12
|
+
- bundle exec danger
|
13
|
+
|
14
|
+
script:
|
15
|
+
- echo SKIP
|
47
16
|
|
48
|
-
bundler_args: --without development
|
data/CHANGELOG.md
CHANGED
@@ -1,21 +1,35 @@
|
|
1
1
|
## Changelog
|
2
2
|
|
3
|
+
### 2.0.2 (2023-01-24)
|
4
|
+
|
5
|
+
* [#92](https://github.com/mongoid/mongoid-locker/pull/92): Removed TTL and updated unique index definitions - [@cesarizu](https://github.com/cesarizu).
|
6
|
+
* [#96](https://github.com/mongoid/mongoid-locker/pull/96): `new Date()` replaced by `Time.now.utc` - [@rsosag](https://github.com/rsosag).
|
7
|
+
* [#96](https://github.com/mongoid/mongoid-locker/pull/96): Update the use of the `change` method in tests - [@rsosag](https://github.com/rsosag).
|
8
|
+
* [#97](https://github.com/mongoid/mongoid-locker/pull/97): Added support for mongoid 8.0.x versions - [@randikabanura](https://github.com/randikabanura).
|
9
|
+
|
10
|
+
### 2.0.1 (2020-06-17)
|
11
|
+
|
12
|
+
* [#86](https://github.com/mongoid/mongoid-locker/pull/86): Upgraded to RuboCop 0.81.0 - [@dks17](https://github.com/dks17).
|
13
|
+
* [#86](https://github.com/mongoid/mongoid-locker/pull/86): Fixed issue with `ruby` `delegate` method - [@dks17](https://github.com/dks17).
|
14
|
+
* [#86](https://github.com/mongoid/mongoid-locker/pull/86): Updated Ruby and JRUby versions for Travis config - [@dks17](https://github.com/dks17).
|
15
|
+
* [#88](https://github.com/mongoid/mongoid-locker/pull/88): Added RSpec test examples - [@dks17](https://github.com/dks17).
|
16
|
+
|
3
17
|
### 2.0.0 (2019-10-23)
|
4
18
|
|
5
|
-
* [#79](https://github.com/mongoid/mongoid-locker/pull/79):
|
6
|
-
* [#78](https://github.com/mongoid/mongoid-locker/pull/78):
|
19
|
+
* [#79](https://github.com/mongoid/mongoid-locker/pull/79): Updated find_and_lock and find_and_unlock methods - [@dks17](https://github.com/dks17).
|
20
|
+
* [#78](https://github.com/mongoid/mongoid-locker/pull/78): Upgraded to v2.0 - [@dks17](https://github.com/dks17).
|
7
21
|
* [#83](https://github.com/mongoid/mongoid-locker/pull/83): Upgraded to RuboCop 0.75.1 - [@dblock](https://github.com/dblock).
|
8
22
|
|
9
23
|
### 1.0.1 (2019-03-23)
|
10
24
|
|
11
|
-
* [#74](https://github.com/mongoid/mongoid-locker/pull/74):
|
25
|
+
* [#74](https://github.com/mongoid/mongoid-locker/pull/74): Added JRuby tests - [@dks17](https://github.com/dks17).
|
12
26
|
* [#68](https://github.com/mongoid/mongoid-locker/pull/68): Fix Rubocop offenses, refactoring, update `ruby` versions, add `COVERAGE` test env, update `.travis.yml` matrix - [@dks17](https://github.com/dks17).
|
13
|
-
* [#67](https://github.com/mongoid/mongoid-locker/pull/67):
|
27
|
+
* [#67](https://github.com/mongoid/mongoid-locker/pull/67): Deprecated `:wait` in favor of `:retries` option, which can attempt to grab a lock multiple times - [@afeld](https://github.com/afeld), [@dks17](https://github.com/dks17).
|
14
28
|
* [#66](https://github.com/mongoid/mongoid-locker/pull/66): Fix Mongoid::Locker::LockError for not persisted document - [@dks17](https://github.com/dks17).
|
15
|
-
* [#65](https://github.com/mongoid/mongoid-locker/pull/65):
|
29
|
+
* [#65](https://github.com/mongoid/mongoid-locker/pull/65): Dropped `mongoid-compatibility` gem dependency - [@dks17](https://github.com/dks17).
|
16
30
|
* [#64](https://github.com/mongoid/mongoid-locker/pull/64): Exclude demo files from the gem - [@dks17](https://github.com/dks17).
|
17
|
-
* [#60](https://github.com/mongoid/mongoid-locker/pull/60):
|
18
|
-
* [#60](https://github.com/mongoid/mongoid-locker/pull/60):
|
31
|
+
* [#60](https://github.com/mongoid/mongoid-locker/pull/60): Dropped support for `mongoid` version `2` and `3` - [@dks17](https://github.com/dks17).
|
32
|
+
* [#60](https://github.com/mongoid/mongoid-locker/pull/60): Added SimpleCov - [@dks17](https://github.com/dks17).
|
19
33
|
|
20
34
|
### 1.0.0 (2018-09-02)
|
21
35
|
|
data/Gemfile
CHANGED
@@ -4,6 +4,8 @@ source 'https://rubygems.org'
|
|
4
4
|
gemspec
|
5
5
|
|
6
6
|
case ENV['MONGOID_VERSION']
|
7
|
+
when /^8/
|
8
|
+
gem 'mongoid', '~> 8.0'
|
7
9
|
when /^7/
|
8
10
|
gem 'mongoid', '~> 7.0'
|
9
11
|
when /^6/
|
@@ -23,9 +25,10 @@ end
|
|
23
25
|
group :development, :test do
|
24
26
|
gem 'pry-byebug', platforms: :mri
|
25
27
|
|
28
|
+
gem 'mongoid-compatibility'
|
26
29
|
gem 'mongoid-danger', '~> 0.1.1'
|
27
|
-
gem 'rspec', '~> 3.
|
28
|
-
gem 'rubocop', '0.
|
29
|
-
gem 'rubocop-rspec'
|
30
|
+
gem 'rspec', '~> 3.9'
|
31
|
+
gem 'rubocop', '0.81.0'
|
32
|
+
gem 'rubocop-rspec', '1.38.1'
|
30
33
|
gem 'simplecov', require: false
|
31
34
|
end
|
data/README.md
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# Mongoid-Locker
|
2
2
|
|
3
3
|
[](https://badge.fury.io/rb/mongoid-locker)
|
4
|
+
[](https://github.com/mongoid/mongoid-locker/actions)
|
4
5
|
[](https://travis-ci.org/mongoid/mongoid-locker)
|
5
6
|
[](https://codeclimate.com/github/mongoid/mongoid-locker/maintainability)
|
6
7
|
[](https://codeclimate.com/github/mongoid/mongoid-locker/test_coverage)
|
@@ -11,12 +12,12 @@ Document-level optimistic locking for MongoDB via Mongoid. Mongoid-Locker is an
|
|
11
12
|
|
12
13
|
**NOTE:** Please refer to [1-x-stable](https://github.com/mongoid/mongoid-locker/tree/1-x-stable) branch for `1.x.x` documentation. See the [UPGRADING](UPGRADING.md) guide and [CHANGELOG](CHANGELOG.md) for an overview of the changes.
|
13
14
|
|
14
|
-
[Tested](https://
|
15
|
-
- MRI: `2.3.8`, `2.4.
|
16
|
-
- JRuby `9.1.17.0`, `9.2.
|
17
|
-
- Mongoid: `5`, `6`, `7`
|
15
|
+
[Tested](https://github.com/mongoid/mongoid-locker/actions) against:
|
16
|
+
- MRI: `2.3.8`, `2.4.7`, `2.5.7`, `2.6.6`, `2.7.1`, `3.0.5`, `3.1.3`
|
17
|
+
- JRuby `9.1.17.0`, `9.2.11.1`
|
18
|
+
- Mongoid: `5`, `6`, `7`, `8`
|
18
19
|
|
19
|
-
See [.
|
20
|
+
See [.github/workflows/test.yml](.github/workflows/test.yml) for the latest test matrix.
|
20
21
|
|
21
22
|
## Usage
|
22
23
|
|
@@ -37,8 +38,6 @@ class User
|
|
37
38
|
field :locked_at, type: Time
|
38
39
|
|
39
40
|
field :age, type: Integer
|
40
|
-
|
41
|
-
index({ _id: 1, locking_name: 1 }, name: 'mongoid_locker_index', sparse: true, unique: true, expire_after_seconds: lock_timeout)
|
42
41
|
end
|
43
42
|
```
|
44
43
|
|
@@ -155,8 +154,11 @@ class User
|
|
155
154
|
end
|
156
155
|
```
|
157
156
|
|
157
|
+
## Testing with RSpec
|
158
|
+
Please see examples in [test_examples_spec.rb](spec/test_examples_spec.rb) file.
|
159
|
+
|
158
160
|
## Copyright & License
|
159
161
|
|
160
|
-
Copyright (c) 2012-
|
162
|
+
Copyright (c) 2012-2020 Aidan Feldman & Contributors
|
161
163
|
|
162
164
|
MIT License, see [LICENSE](LICENSE.txt) for more information.
|
data/RELEASING.md
CHANGED
@@ -12,7 +12,7 @@ bundle install
|
|
12
12
|
bundle exec rake
|
13
13
|
```
|
14
14
|
|
15
|
-
Check that the last build succeeded in [
|
15
|
+
Check that the last build succeeded in [GitHub Actions](https://github.com/mongoid/mongoid-locker/actions) for all supported platforms.
|
16
16
|
|
17
17
|
Check the version, if needed modify [lib/mongoid/locker/version.rb](lib/mongoid/locker/version.rb).
|
18
18
|
|
@@ -8,7 +8,7 @@ module Mongoid
|
|
8
8
|
BASE_KEY = 'mongoid.locker.errors.messages'
|
9
9
|
|
10
10
|
def initialize(key, **params)
|
11
|
-
message = I18n.translate("#{BASE_KEY}.#{key}.message", params)
|
11
|
+
message = I18n.translate("#{BASE_KEY}.#{key}.message", **params)
|
12
12
|
|
13
13
|
super("\nmessage:\n #{message}")
|
14
14
|
end
|
data/lib/mongoid/locker.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'forwardable'
|
3
4
|
require 'securerandom'
|
4
5
|
|
5
6
|
module Mongoid
|
@@ -103,6 +104,8 @@ module Mongoid
|
|
103
104
|
|
104
105
|
# @api private
|
105
106
|
def included(klass)
|
107
|
+
klass.extend(Forwardable) unless klass.ancestors.include?(Forwardable)
|
108
|
+
|
106
109
|
klass.extend ClassMethods
|
107
110
|
klass.singleton_class.instance_eval { attr_accessor(*MODULE_METHODS) }
|
108
111
|
|
@@ -114,7 +117,7 @@ module Mongoid
|
|
114
117
|
klass.backoff_algorithm = backoff_algorithm
|
115
118
|
klass.locking_name_generator = locking_name_generator
|
116
119
|
|
117
|
-
klass.
|
120
|
+
klass.def_delegators(klass, *MODULE_METHODS)
|
118
121
|
klass.singleton_class.delegate(*(methods(false) - MODULE_METHODS.flat_map { |method| [method, "#{method}=".to_sym] } - %i[included reset! configure]), to: self)
|
119
122
|
end
|
120
123
|
end
|
@@ -135,8 +138,7 @@ module Mongoid
|
|
135
138
|
where(
|
136
139
|
'$and': [
|
137
140
|
{ locking_name_field => { '$exists': true, '$ne': nil } },
|
138
|
-
{ locked_at_field => { '$
|
139
|
-
{ '$where': "new Date() - this.#{locked_at_field} < #{lock_timeout * 1000}" }
|
141
|
+
{ locked_at_field => { '$gte': Time.now.utc - (lock_timeout * 1000) } }
|
140
142
|
]
|
141
143
|
)
|
142
144
|
end
|
@@ -165,9 +167,7 @@ module Mongoid
|
|
165
167
|
{ locked_at_field => { '$eq': nil } }
|
166
168
|
]
|
167
169
|
},
|
168
|
-
{
|
169
|
-
'$where': "new Date() - this.#{locked_at_field} >= #{lock_timeout * 1000}"
|
170
|
-
}
|
170
|
+
{ locked_at_field => { '$lt': Time.now.utc - (lock_timeout * 1000) } }
|
171
171
|
]
|
172
172
|
)
|
173
173
|
end
|
data/mongoid-locker.gemspec
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mongoid-locker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aidan Feldman
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-01-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mongoid
|
@@ -19,7 +19,7 @@ dependencies:
|
|
19
19
|
version: '5.0'
|
20
20
|
- - "<"
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: '
|
22
|
+
version: '9'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -29,7 +29,7 @@ dependencies:
|
|
29
29
|
version: '5.0'
|
30
30
|
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version: '
|
32
|
+
version: '9'
|
33
33
|
description: Allows multiple processes to operate on individual documents in MongoDB
|
34
34
|
while ensuring that only one can act at a time.
|
35
35
|
email:
|
@@ -38,6 +38,7 @@ executables: []
|
|
38
38
|
extensions: []
|
39
39
|
extra_rdoc_files: []
|
40
40
|
files:
|
41
|
+
- ".github/workflows/test.yml"
|
41
42
|
- ".gitignore"
|
42
43
|
- ".rspec"
|
43
44
|
- ".rubocop.yml"
|
@@ -79,7 +80,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
79
80
|
- !ruby/object:Gem::Version
|
80
81
|
version: '0'
|
81
82
|
requirements: []
|
82
|
-
rubygems_version: 3.0.
|
83
|
+
rubygems_version: 3.0.9
|
83
84
|
signing_key:
|
84
85
|
specification_version: 4
|
85
86
|
summary: Document-level optimistic locking for MongoDB via Mongoid.
|