active_record_mutex 2.0.0 → 2.2.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 +4 -4
- data/.gitignore +1 -0
- data/.travis.yml +1 -0
- data/README.md +1 -0
- data/Rakefile +3 -2
- data/VERSION +1 -1
- data/active_record_mutex.gemspec +11 -11
- data/lib/active_record/database_mutex.rb +5 -3
- data/lib/active_record/database_mutex/implementation.rb +3 -3
- data/lib/active_record/database_mutex/version.rb +1 -1
- data/test/database_mutex_test.rb +29 -3
- data/test/test_helper.rb +7 -1
- metadata +9 -10
- data/CHANGES +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 57edd5b2783fbaca9577d0d8844995db0da452af
|
4
|
+
data.tar.gz: f10aceb1edeb6b41e44fdab8d64121bc9b409bfc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d427e2a1befb62f430afd4f2dcf648f797ea8782147161d867188ec606ce8b0c23d0b0f48427c508381a19103257c94170a0a46ed5c3706814e40e360a87c013
|
7
|
+
data.tar.gz: fc1165348c415d5561c6b0607555697082aa1339e17e14a93a24b0f0ea225703a9d7c461189be949d23a0ac598c9a8f30c7b850fb42dad41ca69827fa400fb08
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
data/README.md
CHANGED
data/Rakefile
CHANGED
@@ -12,12 +12,13 @@ GemHadar do
|
|
12
12
|
description 'Mutex that can be used to synchronise ruby processes via an ActiveRecord'\
|
13
13
|
' datababase connection. (Only Mysql is supported at the moment.)'
|
14
14
|
test_dir 'test'
|
15
|
-
ignore '.*.sw[pon]', 'pkg', 'Gemfile.lock', '.DS_Store', 'coverage'
|
15
|
+
ignore '.*.sw[pon]', 'pkg', 'Gemfile.lock', '.DS_Store', 'coverage',
|
16
|
+
'.byebug_history'
|
16
17
|
readme 'README.md'
|
17
18
|
licenses << 'GPL-2'
|
18
19
|
|
19
20
|
dependency 'mysql2', '~>0.3.0'
|
20
|
-
dependency 'activerecord'
|
21
|
+
dependency 'activerecord', '~> 4.0'
|
21
22
|
development_dependency 'test-unit', '~>3.0'
|
22
23
|
development_dependency 'byebug'
|
23
24
|
development_dependency 'simplecov'
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.
|
1
|
+
2.2.0
|
data/active_record_mutex.gemspec
CHANGED
@@ -1,22 +1,22 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
# stub: active_record_mutex 2.
|
2
|
+
# stub: active_record_mutex 2.2.0 ruby lib
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
5
|
s.name = "active_record_mutex"
|
6
|
-
s.version = "2.
|
6
|
+
s.version = "2.2.0"
|
7
7
|
|
8
8
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
9
9
|
s.require_paths = ["lib"]
|
10
10
|
s.authors = ["Florian Frank"]
|
11
|
-
s.date = "
|
11
|
+
s.date = "2016-08-19"
|
12
12
|
s.description = "Mutex that can be used to synchronise ruby processes via an ActiveRecord datababase connection. (Only Mysql is supported at the moment.)"
|
13
13
|
s.email = "flori@ping.de"
|
14
14
|
s.extra_rdoc_files = ["README.md", "lib/active_record/database_mutex.rb", "lib/active_record/database_mutex/implementation.rb", "lib/active_record/database_mutex/version.rb", "lib/active_record/mutex.rb", "lib/active_record_mutex.rb"]
|
15
|
-
s.files = [".gitignore", ".travis.yml", "
|
15
|
+
s.files = [".gitignore", ".travis.yml", "COPYING", "Gemfile", "README.md", "Rakefile", "VERSION", "active_record_mutex.gemspec", "lib/active_record/database_mutex.rb", "lib/active_record/database_mutex/implementation.rb", "lib/active_record/database_mutex/version.rb", "lib/active_record/mutex.rb", "lib/active_record_mutex.rb", "test/database_mutex_test.rb", "test/test_helper.rb"]
|
16
16
|
s.homepage = "http://github.com/flori/active_record_mutex"
|
17
17
|
s.licenses = ["GPL-2"]
|
18
18
|
s.rdoc_options = ["--title", "ActiveRecordMutex - Implementation of a Mutex for Active Record", "--main", "README.md"]
|
19
|
-
s.rubygems_version = "2.
|
19
|
+
s.rubygems_version = "2.5.1"
|
20
20
|
s.summary = "Implementation of a Mutex for Active Record"
|
21
21
|
s.test_files = ["test/database_mutex_test.rb", "test/test_helper.rb"]
|
22
22
|
|
@@ -24,26 +24,26 @@ Gem::Specification.new do |s|
|
|
24
24
|
s.specification_version = 4
|
25
25
|
|
26
26
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
27
|
-
s.add_development_dependency(%q<gem_hadar>, ["~>
|
27
|
+
s.add_development_dependency(%q<gem_hadar>, ["~> 1.7.1"])
|
28
28
|
s.add_development_dependency(%q<test-unit>, ["~> 3.0"])
|
29
29
|
s.add_development_dependency(%q<byebug>, [">= 0"])
|
30
30
|
s.add_development_dependency(%q<simplecov>, [">= 0"])
|
31
31
|
s.add_runtime_dependency(%q<mysql2>, ["~> 0.3.0"])
|
32
|
-
s.add_runtime_dependency(%q<activerecord>, ["
|
32
|
+
s.add_runtime_dependency(%q<activerecord>, ["~> 4.0"])
|
33
33
|
else
|
34
|
-
s.add_dependency(%q<gem_hadar>, ["~>
|
34
|
+
s.add_dependency(%q<gem_hadar>, ["~> 1.7.1"])
|
35
35
|
s.add_dependency(%q<test-unit>, ["~> 3.0"])
|
36
36
|
s.add_dependency(%q<byebug>, [">= 0"])
|
37
37
|
s.add_dependency(%q<simplecov>, [">= 0"])
|
38
38
|
s.add_dependency(%q<mysql2>, ["~> 0.3.0"])
|
39
|
-
s.add_dependency(%q<activerecord>, ["
|
39
|
+
s.add_dependency(%q<activerecord>, ["~> 4.0"])
|
40
40
|
end
|
41
41
|
else
|
42
|
-
s.add_dependency(%q<gem_hadar>, ["~>
|
42
|
+
s.add_dependency(%q<gem_hadar>, ["~> 1.7.1"])
|
43
43
|
s.add_dependency(%q<test-unit>, ["~> 3.0"])
|
44
44
|
s.add_dependency(%q<byebug>, [">= 0"])
|
45
45
|
s.add_dependency(%q<simplecov>, [">= 0"])
|
46
46
|
s.add_dependency(%q<mysql2>, ["~> 0.3.0"])
|
47
|
-
s.add_dependency(%q<activerecord>, ["
|
47
|
+
s.add_dependency(%q<activerecord>, ["~> 4.0"])
|
48
48
|
end
|
49
49
|
end
|
@@ -17,7 +17,7 @@ module ActiveRecord
|
|
17
17
|
# moment and lock was called again.
|
18
18
|
class MutexLocked < MutexError; end
|
19
19
|
|
20
|
-
class MutexInvalidState <
|
20
|
+
class MutexInvalidState < MutexError; end
|
21
21
|
|
22
22
|
def self.included(modul)
|
23
23
|
modul.instance_eval do
|
@@ -25,7 +25,7 @@ module ActiveRecord
|
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
28
|
-
#
|
28
|
+
# Return a mutex implementation for the mutex named +name+.
|
29
29
|
def self.for(name)
|
30
30
|
Implementation.new(:name => name)
|
31
31
|
end
|
@@ -33,7 +33,9 @@ module ActiveRecord
|
|
33
33
|
module ClassMethods
|
34
34
|
# Returns a mutex instance for this ActiveRecord subclass.
|
35
35
|
def mutex
|
36
|
-
@mutex ||= Implementation.new(
|
36
|
+
@mutex ||= Implementation.new(
|
37
|
+
:name => [ name, ENV['RAILS_ENV'] ].compact * ?@
|
38
|
+
)
|
37
39
|
end
|
38
40
|
end
|
39
41
|
|
@@ -24,13 +24,12 @@ module ActiveRecord
|
|
24
24
|
# ends after that many seconds and the method returns immediately if the
|
25
25
|
# lock couldn't be aquired during that time.
|
26
26
|
def synchronize(opts = {})
|
27
|
-
locked_before = aquired_lock?
|
28
27
|
locked = lock(opts) or return
|
29
28
|
yield
|
30
29
|
rescue ActiveRecord::DatabaseMutex::MutexLocked
|
31
30
|
return nil
|
32
31
|
ensure
|
33
|
-
|
32
|
+
locked && unlock
|
34
33
|
end
|
35
34
|
|
36
35
|
# Locks the mutex and returns true if successful. If the mutex is
|
@@ -65,7 +64,8 @@ module ActiveRecord
|
|
65
64
|
end
|
66
65
|
end
|
67
66
|
|
68
|
-
#
|
67
|
+
# Unlock this mutex and return self if successful, otherwise (the mutex
|
68
|
+
# was not locked) nil is returned.
|
69
69
|
def unlock?(*a)
|
70
70
|
unlock(*a)
|
71
71
|
self
|
data/test/database_mutex_test.rb
CHANGED
@@ -17,10 +17,28 @@ class DatabaseMutexTest < Test::Unit::TestCase
|
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
20
|
-
def
|
20
|
+
def test_class_method_mutex
|
21
|
+
old, ENV['RAILS_ENV'] = ENV['RAILS_ENV'], nil
|
22
|
+
Foo.instance_eval do
|
23
|
+
@mutex = nil
|
24
|
+
end
|
21
25
|
mutex = Foo.mutex
|
22
26
|
assert_kind_of ActiveRecord::DatabaseMutex::Implementation, mutex
|
23
|
-
assert_equal
|
27
|
+
assert_equal Foo.name, mutex.name
|
28
|
+
ensure
|
29
|
+
ENV['RAILS_ENV'] = old
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_class_method_mutex_within_env
|
33
|
+
old, ENV['RAILS_ENV'] = ENV['RAILS_ENV'], 'test'
|
34
|
+
Foo.instance_eval do
|
35
|
+
@mutex = nil
|
36
|
+
end
|
37
|
+
mutex = Foo.mutex
|
38
|
+
assert_kind_of ActiveRecord::DatabaseMutex::Implementation, mutex
|
39
|
+
assert_equal "#{Foo.name}@test", mutex.name
|
40
|
+
ensure
|
41
|
+
ENV['RAILS_ENV'] = old
|
24
42
|
end
|
25
43
|
|
26
44
|
def test_instance_method
|
@@ -31,7 +49,7 @@ class DatabaseMutexTest < Test::Unit::TestCase
|
|
31
49
|
assert_equal true, instance.save
|
32
50
|
mutex = instance.mutex
|
33
51
|
assert_kind_of ActiveRecord::DatabaseMutex::Implementation, mutex
|
34
|
-
assert_equal
|
52
|
+
assert_equal "#{instance.id}@#{Foo.name}", mutex.name
|
35
53
|
end
|
36
54
|
|
37
55
|
def test_factory_method_for
|
@@ -101,4 +119,12 @@ class DatabaseMutexTest < Test::Unit::TestCase
|
|
101
119
|
end
|
102
120
|
assert mutex.unlocked?
|
103
121
|
end
|
122
|
+
|
123
|
+
def test_synchronize_already_locked
|
124
|
+
mutex = Implementation.new(:name => 'Sync4')
|
125
|
+
def mutex.lock(*)
|
126
|
+
raise ActiveRecord::DatabaseMutex::MutexLocked
|
127
|
+
end
|
128
|
+
assert_nil mutex.synchronize {}
|
129
|
+
end
|
104
130
|
end
|
data/test/test_helper.rb
CHANGED
@@ -2,9 +2,15 @@ if ENV.key?('CODECLIMATE_REPO_TOKEN')
|
|
2
2
|
require "codeclimate-test-reporter"
|
3
3
|
CodeClimate::TestReporter.start
|
4
4
|
end
|
5
|
+
if ENV['START_SIMPLECOV'].to_i == 1
|
6
|
+
require 'simplecov'
|
7
|
+
SimpleCov.start do
|
8
|
+
add_filter "#{File.basename(File.dirname(__FILE__))}/"
|
9
|
+
end
|
10
|
+
end
|
5
11
|
|
6
|
-
$:.unshift File.join(File.dirname(__FILE__), '..', 'lib')
|
7
12
|
require 'active_record'
|
13
|
+
$:.unshift File.join(File.dirname(__FILE__), '..', 'lib')
|
8
14
|
require 'active_record/database_mutex'
|
9
15
|
|
10
16
|
ActiveRecord::Base.establish_connection(
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_record_mutex
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Florian Frank
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-08-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: gem_hadar
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 1.7.1
|
20
20
|
type: :development
|
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: 1.7.1
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: test-unit
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -84,16 +84,16 @@ dependencies:
|
|
84
84
|
name: activerecord
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- - "
|
87
|
+
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: '0'
|
89
|
+
version: '4.0'
|
90
90
|
type: :runtime
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- - "
|
94
|
+
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: '0'
|
96
|
+
version: '4.0'
|
97
97
|
description: Mutex that can be used to synchronise ruby processes via an ActiveRecord
|
98
98
|
datababase connection. (Only Mysql is supported at the moment.)
|
99
99
|
email: flori@ping.de
|
@@ -109,7 +109,6 @@ extra_rdoc_files:
|
|
109
109
|
files:
|
110
110
|
- ".gitignore"
|
111
111
|
- ".travis.yml"
|
112
|
-
- CHANGES
|
113
112
|
- COPYING
|
114
113
|
- Gemfile
|
115
114
|
- README.md
|
@@ -147,7 +146,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
147
146
|
version: '0'
|
148
147
|
requirements: []
|
149
148
|
rubyforge_project:
|
150
|
-
rubygems_version: 2.
|
149
|
+
rubygems_version: 2.5.1
|
151
150
|
signing_key:
|
152
151
|
specification_version: 4
|
153
152
|
summary: Implementation of a Mutex for Active Record
|
data/CHANGES
DELETED
File without changes
|