mongoid-locker 0.3.2 → 0.3.3
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/.rspec +1 -0
- data/.rubocop_todo.yml +5 -5
- data/.travis.yml +2 -0
- data/CHANGELOG.md +2 -2
- data/Gemfile +8 -4
- data/README.md +2 -2
- data/VERSION +1 -1
- data/lib/mongoid/locker/wrapper.rb +10 -11
- data/mongoid-locker.gemspec +11 -7
- data/spec/database5.yml +7 -0
- data/spec/spec_helper.rb +8 -0
- metadata +20 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bf9bd7b5292b2c9ab352102fb652cc6751d4be64
|
4
|
+
data.tar.gz: 0a8eb450da8131e7808831787ae9135dae805e37
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 593ddca343da2c1c107f2ef972eeaccd2c3303c1401fa5b04ed667f411ea53ca47ab6b1043e2545a6e478692f8620292f904fe606fd1f7f40c3f2c39b75b4360
|
7
|
+
data.tar.gz: fcf91faa35ebd2201a8c66debdc49e4a2cbb46c19711d14a8264a20aa778baf7ce915e5ac939d00bfeab6effc1f3df29decd7414b70599d4e6e463dc18c0b657
|
data/.rspec
CHANGED
data/.rubocop_todo.yml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
# This configuration was generated by `rubocop --auto-gen-config`
|
2
|
-
# on 2015-
|
2
|
+
# on 2015-09-25 09:10:09 -0400 using RuboCop version 0.29.1.
|
3
3
|
# The point is for the user to remove these configuration records
|
4
4
|
# one by one as the offenses are removed from the code base.
|
5
5
|
# Note that changes in the inspected code, or installation of new
|
6
6
|
# versions of RuboCop, may require this file to be generated again.
|
7
7
|
|
8
|
-
# Offense count:
|
8
|
+
# Offense count: 2
|
9
9
|
Metrics/AbcSize:
|
10
|
-
Max:
|
10
|
+
Max: 19
|
11
11
|
|
12
|
-
# Offense count:
|
12
|
+
# Offense count: 25
|
13
13
|
# Configuration parameters: AllowURI, URISchemes.
|
14
14
|
Metrics/LineLength:
|
15
15
|
Max: 184
|
@@ -19,7 +19,7 @@ Metrics/LineLength:
|
|
19
19
|
Metrics/MethodLength:
|
20
20
|
Max: 25
|
21
21
|
|
22
|
-
# Offense count:
|
22
|
+
# Offense count: 6
|
23
23
|
# Cop supports --auto-correct.
|
24
24
|
Style/Blocks:
|
25
25
|
Enabled: false
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
-
##
|
3
|
+
## 0.3.3 ([diff](https://github.com/afeld/mongoid-locker/compare/v0.3.3...master?w=1))
|
4
4
|
|
5
|
-
*
|
5
|
+
* support Mongoid 5 - #36
|
6
6
|
|
7
7
|
## 0.3.2 ([diff](https://github.com/afeld/mongoid-locker/compare/v0.3.1...v0.3.2?w=1))
|
8
8
|
|
data/Gemfile
CHANGED
@@ -1,17 +1,21 @@
|
|
1
1
|
source 'http://rubygems.org'
|
2
2
|
|
3
3
|
case ENV['MONGOID_VERSION']
|
4
|
-
when /
|
4
|
+
when /^5/
|
5
|
+
gem 'mongoid', '~> 5.0'
|
6
|
+
when /^4/
|
5
7
|
gem 'mongoid', '~> 4.0'
|
6
|
-
when
|
8
|
+
when /^3/
|
7
9
|
gem 'mongoid', '~> 3.1'
|
8
|
-
when
|
10
|
+
when /^2/
|
9
11
|
gem 'bson_ext', platforms: :ruby
|
10
12
|
gem 'mongoid', '~> 2.8'
|
11
13
|
else
|
12
|
-
gem 'mongoid', '>= 2.8', '<
|
14
|
+
gem 'mongoid', '>= 2.8', '< 6.0'
|
13
15
|
end
|
14
16
|
|
17
|
+
gem 'mongoid-compatibility'
|
18
|
+
|
15
19
|
group :development do
|
16
20
|
gem 'rspec', '~> 3.0'
|
17
21
|
gem 'bundler', '~> 1.1'
|
data/README.md
CHANGED
@@ -1,8 +1,8 @@
|
|
1
|
-
# mongoid-locker [](http://travis-ci.org/afeld/mongoid-locker) [](https://codeclimate.com/github/afeld/mongoid-locker)
|
2
2
|
|
3
3
|
Document-level locking for MongoDB via Mongoid. The need arose at [Jux](https://jux.com) from multiple processes on multiple servers trying to act upon the same document and stepping on each other's toes. Mongoid-Locker is an easy way to ensure only one process can perform a certain operation on a document at a time.
|
4
4
|
|
5
|
-
[Tested](http://travis-ci.org/afeld/mongoid-locker) against MRI 1.9.3, 2.0.0 and 2.1.2, Rubinius 2.x, and JRuby 1.9 with Mongoid 2, 3 and
|
5
|
+
[Tested](http://travis-ci.org/afeld/mongoid-locker) against MRI 1.9.3, 2.0.0 and 2.1.2, Rubinius 2.x, and JRuby 1.9 with Mongoid 2, 3, 4 and 5 ([where supported](http://travis-ci.org/#!/afeld/mongoid-locker)).
|
6
6
|
|
7
7
|
## Usage
|
8
8
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.3.
|
1
|
+
0.3.3
|
@@ -1,9 +1,9 @@
|
|
1
|
+
require 'mongoid/compatibility'
|
2
|
+
|
1
3
|
module Mongoid
|
2
4
|
module Locker
|
3
5
|
# Normalizes queries between Mongoid 2 and 3.
|
4
6
|
module Wrapper
|
5
|
-
IS_OLD_MONGOID = Mongoid::VERSION.start_with? '2.'
|
6
|
-
|
7
7
|
# Update the document for the provided Class matching the provided query with the provided setter.
|
8
8
|
#
|
9
9
|
# @param [Class] The model class
|
@@ -11,14 +11,13 @@ module Mongoid
|
|
11
11
|
# @param [Hash] The Mongoid setter
|
12
12
|
# @return [Boolean] true if the document was successfully updated, false otherwise
|
13
13
|
def self.update(klass, query, setter)
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
error_obj['n'] == 1
|
14
|
+
if Mongoid::Compatibility::Version.mongoid5?
|
15
|
+
!klass.with(safe: true).collection.find(query).find_one_and_update(setter).nil?
|
16
|
+
elsif Mongoid::Compatibility::Version.mongoid2?
|
17
|
+
klass.collection.update(query, setter, safe: true)['n'] == 1
|
18
|
+
else
|
19
|
+
klass.with(safe: true).collection.find(query).update(setter)['n'] == 1
|
20
|
+
end
|
22
21
|
end
|
23
22
|
|
24
23
|
# Determine whether the provided document is locked in the database or not.
|
@@ -31,7 +30,7 @@ module Mongoid
|
|
31
30
|
locked_until: { '$exists' => true }
|
32
31
|
}
|
33
32
|
|
34
|
-
if
|
33
|
+
if Mongoid::Compatibility::Version.mongoid2?
|
35
34
|
existing = doc.class.collection.find_one(existing_query, fields: { locked_until: 1 })
|
36
35
|
existing ? existing['locked_until'] : nil
|
37
36
|
else
|
data/mongoid-locker.gemspec
CHANGED
@@ -2,16 +2,16 @@
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
3
|
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
-
# stub: mongoid-locker 0.3.
|
5
|
+
# stub: mongoid-locker 0.3.3 ruby lib
|
6
6
|
|
7
7
|
Gem::Specification.new do |s|
|
8
8
|
s.name = "mongoid-locker"
|
9
|
-
s.version = "0.3.
|
9
|
+
s.version = "0.3.3"
|
10
10
|
|
11
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
12
12
|
s.require_paths = ["lib"]
|
13
13
|
s.authors = ["Aidan Feldman"]
|
14
|
-
s.date = "2015-
|
14
|
+
s.date = "2015-09-25"
|
15
15
|
s.description = "Allows multiple processes to operate on individual documents in MongoDB while ensuring that only one can act at a time."
|
16
16
|
s.email = "aidan.feldman@gmail.com"
|
17
17
|
s.extra_rdoc_files = [
|
@@ -45,19 +45,21 @@ Gem::Specification.new do |s|
|
|
45
45
|
"spec/database2.yml",
|
46
46
|
"spec/database3.yml",
|
47
47
|
"spec/database4.yml",
|
48
|
+
"spec/database5.yml",
|
48
49
|
"spec/mongoid-locker_spec.rb",
|
49
50
|
"spec/spec_helper.rb"
|
50
51
|
]
|
51
52
|
s.homepage = "http://github.com/afeld/mongoid-locker"
|
52
53
|
s.licenses = ["MIT"]
|
53
|
-
s.rubygems_version = "2.
|
54
|
+
s.rubygems_version = "2.2.2"
|
54
55
|
s.summary = "Document-level locking for MongoDB via Mongoid"
|
55
56
|
|
56
57
|
if s.respond_to? :specification_version then
|
57
58
|
s.specification_version = 4
|
58
59
|
|
59
60
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
60
|
-
s.add_runtime_dependency(%q<mongoid>, ["<
|
61
|
+
s.add_runtime_dependency(%q<mongoid>, ["< 6.0", ">= 2.8"])
|
62
|
+
s.add_runtime_dependency(%q<mongoid-compatibility>, [">= 0"])
|
61
63
|
s.add_development_dependency(%q<rspec>, ["~> 3.0"])
|
62
64
|
s.add_development_dependency(%q<bundler>, ["~> 1.1"])
|
63
65
|
s.add_development_dependency(%q<jeweler>, ["~> 1.8"])
|
@@ -66,7 +68,8 @@ Gem::Specification.new do |s|
|
|
66
68
|
s.add_development_dependency(%q<rake>, [">= 0"])
|
67
69
|
s.add_development_dependency(%q<rubocop>, ["= 0.29.1"])
|
68
70
|
else
|
69
|
-
s.add_dependency(%q<mongoid>, ["<
|
71
|
+
s.add_dependency(%q<mongoid>, ["< 6.0", ">= 2.8"])
|
72
|
+
s.add_dependency(%q<mongoid-compatibility>, [">= 0"])
|
70
73
|
s.add_dependency(%q<rspec>, ["~> 3.0"])
|
71
74
|
s.add_dependency(%q<bundler>, ["~> 1.1"])
|
72
75
|
s.add_dependency(%q<jeweler>, ["~> 1.8"])
|
@@ -76,7 +79,8 @@ Gem::Specification.new do |s|
|
|
76
79
|
s.add_dependency(%q<rubocop>, ["= 0.29.1"])
|
77
80
|
end
|
78
81
|
else
|
79
|
-
s.add_dependency(%q<mongoid>, ["<
|
82
|
+
s.add_dependency(%q<mongoid>, ["< 6.0", ">= 2.8"])
|
83
|
+
s.add_dependency(%q<mongoid-compatibility>, [">= 0"])
|
80
84
|
s.add_dependency(%q<rspec>, ["~> 3.0"])
|
81
85
|
s.add_dependency(%q<bundler>, ["~> 1.1"])
|
82
86
|
s.add_dependency(%q<jeweler>, ["~> 1.8"])
|
data/spec/database5.yml
ADDED
data/spec/spec_helper.rb
CHANGED
@@ -1,7 +1,9 @@
|
|
1
1
|
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
2
2
|
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
3
|
+
|
3
4
|
require 'rspec'
|
4
5
|
require 'mongoid-locker'
|
6
|
+
require 'mongoid/compatibility'
|
5
7
|
|
6
8
|
ENV['RACK_ENV'] = 'test'
|
7
9
|
|
@@ -19,5 +21,11 @@ RSpec.configure do |config|
|
|
19
21
|
if ENV['LOG']
|
20
22
|
Mongoid.logger.level = Logger::DEBUG
|
21
23
|
Moped.logger.level = Logger::DEBUG if defined? Moped
|
24
|
+
elsif Mongoid::Compatibility::Version.mongoid5?
|
25
|
+
Mongoid.logger.level = Logger::INFO
|
26
|
+
Mongo::Logger.logger.level = Logger::INFO
|
27
|
+
else
|
28
|
+
Mongoid.logger.level = Logger::INFO
|
29
|
+
Moped.logger.level = Logger::INFO if defined? Moped
|
22
30
|
end
|
23
31
|
end
|
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: 0.3.
|
4
|
+
version: 0.3.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aidan Feldman
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-09-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mongoid
|
@@ -16,7 +16,7 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "<"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '6.0'
|
20
20
|
- - ">="
|
21
21
|
- !ruby/object:Gem::Version
|
22
22
|
version: '2.8'
|
@@ -26,10 +26,24 @@ dependencies:
|
|
26
26
|
requirements:
|
27
27
|
- - "<"
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: '
|
29
|
+
version: '6.0'
|
30
30
|
- - ">="
|
31
31
|
- !ruby/object:Gem::Version
|
32
32
|
version: '2.8'
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: mongoid-compatibility
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - ">="
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '0'
|
40
|
+
type: :runtime
|
41
|
+
prerelease: false
|
42
|
+
version_requirements: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - ">="
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '0'
|
33
47
|
- !ruby/object:Gem::Dependency
|
34
48
|
name: rspec
|
35
49
|
requirement: !ruby/object:Gem::Requirement
|
@@ -163,6 +177,7 @@ files:
|
|
163
177
|
- spec/database2.yml
|
164
178
|
- spec/database3.yml
|
165
179
|
- spec/database4.yml
|
180
|
+
- spec/database5.yml
|
166
181
|
- spec/mongoid-locker_spec.rb
|
167
182
|
- spec/spec_helper.rb
|
168
183
|
homepage: http://github.com/afeld/mongoid-locker
|
@@ -185,7 +200,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
185
200
|
version: '0'
|
186
201
|
requirements: []
|
187
202
|
rubyforge_project:
|
188
|
-
rubygems_version: 2.
|
203
|
+
rubygems_version: 2.2.2
|
189
204
|
signing_key:
|
190
205
|
specification_version: 4
|
191
206
|
summary: Document-level locking for MongoDB via Mongoid
|