active_record_mutex 2.3.7 → 2.3.8
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/.travis.yml +3 -0
- data/VERSION +1 -1
- data/active_record_mutex.gemspec +38 -38
- data/lib/active_record/database_mutex/implementation.rb +13 -7
- data/lib/active_record/database_mutex/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: a8705fe3d190b75644675f7fc74d246da19f8a3b
|
|
4
|
+
data.tar.gz: 2441f8fbca8fd0fca45e380341a9e0a924c49acd
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 5525469c28b82c0e6a4c78e2d5ae410a351df12a61b011acedb73f966604708b39a1e3a87ab9e25dd18a30b472d24e645318766540a18dff611dc12c0055f86f
|
|
7
|
+
data.tar.gz: 6b6e0addf643c5db413aa1c21ae1f3f4963b46af08c12f7c78ed1b82e0123c02e2777b718da8754faebeefb06729581c86756f680621bbc5daf4d0798e81d165
|
data/.travis.yml
CHANGED
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
2.3.
|
|
1
|
+
2.3.8
|
data/active_record_mutex.gemspec
CHANGED
|
@@ -1,52 +1,52 @@
|
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
|
2
|
-
# stub: active_record_mutex 2.3.
|
|
2
|
+
# stub: active_record_mutex 2.3.8 ruby lib
|
|
3
3
|
|
|
4
4
|
Gem::Specification.new do |s|
|
|
5
|
-
s.name = "active_record_mutex"
|
|
6
|
-
s.version = "2.3.
|
|
5
|
+
s.name = "active_record_mutex".freeze
|
|
6
|
+
s.version = "2.3.8"
|
|
7
7
|
|
|
8
|
-
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
|
9
|
-
s.require_paths = ["lib"]
|
|
10
|
-
s.authors = ["Florian Frank"]
|
|
11
|
-
s.date = "2016-09-
|
|
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
|
-
s.email = "flori@ping.de"
|
|
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", "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
|
-
s.homepage = "http://github.com/flori/active_record_mutex"
|
|
17
|
-
s.licenses = ["GPL-2"]
|
|
18
|
-
s.rdoc_options = ["--title", "ActiveRecordMutex - Implementation of a Mutex for Active Record", "--main", "README.md"]
|
|
19
|
-
s.rubygems_version = "2.
|
|
20
|
-
s.summary = "Implementation of a Mutex for Active Record"
|
|
21
|
-
s.test_files = ["test/database_mutex_test.rb", "test/test_helper.rb"]
|
|
8
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
|
|
9
|
+
s.require_paths = ["lib".freeze]
|
|
10
|
+
s.authors = ["Florian Frank".freeze]
|
|
11
|
+
s.date = "2016-09-07"
|
|
12
|
+
s.description = "Mutex that can be used to synchronise ruby processes via an ActiveRecord datababase connection. (Only Mysql is supported at the moment.)".freeze
|
|
13
|
+
s.email = "flori@ping.de".freeze
|
|
14
|
+
s.extra_rdoc_files = ["README.md".freeze, "lib/active_record/database_mutex.rb".freeze, "lib/active_record/database_mutex/implementation.rb".freeze, "lib/active_record/database_mutex/version.rb".freeze, "lib/active_record/mutex.rb".freeze, "lib/active_record_mutex.rb".freeze]
|
|
15
|
+
s.files = [".gitignore".freeze, ".travis.yml".freeze, "COPYING".freeze, "Gemfile".freeze, "README.md".freeze, "Rakefile".freeze, "VERSION".freeze, "active_record_mutex.gemspec".freeze, "lib/active_record/database_mutex.rb".freeze, "lib/active_record/database_mutex/implementation.rb".freeze, "lib/active_record/database_mutex/version.rb".freeze, "lib/active_record/mutex.rb".freeze, "lib/active_record_mutex.rb".freeze, "test/database_mutex_test.rb".freeze, "test/test_helper.rb".freeze]
|
|
16
|
+
s.homepage = "http://github.com/flori/active_record_mutex".freeze
|
|
17
|
+
s.licenses = ["GPL-2".freeze]
|
|
18
|
+
s.rdoc_options = ["--title".freeze, "ActiveRecordMutex - Implementation of a Mutex for Active Record".freeze, "--main".freeze, "README.md".freeze]
|
|
19
|
+
s.rubygems_version = "2.6.4".freeze
|
|
20
|
+
s.summary = "Implementation of a Mutex for Active Record".freeze
|
|
21
|
+
s.test_files = ["test/database_mutex_test.rb".freeze, "test/test_helper.rb".freeze]
|
|
22
22
|
|
|
23
23
|
if s.respond_to? :specification_version then
|
|
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
|
|
28
|
-
s.add_development_dependency(%q<test-unit
|
|
29
|
-
s.add_development_dependency(%q<byebug
|
|
30
|
-
s.add_development_dependency(%q<simplecov
|
|
31
|
-
s.add_runtime_dependency(%q<mysql2
|
|
32
|
-
s.add_runtime_dependency(%q<activerecord
|
|
33
|
-
s.add_runtime_dependency(%q<tins
|
|
27
|
+
s.add_development_dependency(%q<gem_hadar>.freeze, ["~> 1.7.1"])
|
|
28
|
+
s.add_development_dependency(%q<test-unit>.freeze, ["~> 3.0"])
|
|
29
|
+
s.add_development_dependency(%q<byebug>.freeze, [">= 0"])
|
|
30
|
+
s.add_development_dependency(%q<simplecov>.freeze, [">= 0"])
|
|
31
|
+
s.add_runtime_dependency(%q<mysql2>.freeze, ["~> 0.3.0"])
|
|
32
|
+
s.add_runtime_dependency(%q<activerecord>.freeze, ["~> 4.0"])
|
|
33
|
+
s.add_runtime_dependency(%q<tins>.freeze, ["~> 1.12.0"])
|
|
34
34
|
else
|
|
35
|
-
s.add_dependency(%q<gem_hadar
|
|
36
|
-
s.add_dependency(%q<test-unit
|
|
37
|
-
s.add_dependency(%q<byebug
|
|
38
|
-
s.add_dependency(%q<simplecov
|
|
39
|
-
s.add_dependency(%q<mysql2
|
|
40
|
-
s.add_dependency(%q<activerecord
|
|
41
|
-
s.add_dependency(%q<tins
|
|
35
|
+
s.add_dependency(%q<gem_hadar>.freeze, ["~> 1.7.1"])
|
|
36
|
+
s.add_dependency(%q<test-unit>.freeze, ["~> 3.0"])
|
|
37
|
+
s.add_dependency(%q<byebug>.freeze, [">= 0"])
|
|
38
|
+
s.add_dependency(%q<simplecov>.freeze, [">= 0"])
|
|
39
|
+
s.add_dependency(%q<mysql2>.freeze, ["~> 0.3.0"])
|
|
40
|
+
s.add_dependency(%q<activerecord>.freeze, ["~> 4.0"])
|
|
41
|
+
s.add_dependency(%q<tins>.freeze, ["~> 1.12.0"])
|
|
42
42
|
end
|
|
43
43
|
else
|
|
44
|
-
s.add_dependency(%q<gem_hadar
|
|
45
|
-
s.add_dependency(%q<test-unit
|
|
46
|
-
s.add_dependency(%q<byebug
|
|
47
|
-
s.add_dependency(%q<simplecov
|
|
48
|
-
s.add_dependency(%q<mysql2
|
|
49
|
-
s.add_dependency(%q<activerecord
|
|
50
|
-
s.add_dependency(%q<tins
|
|
44
|
+
s.add_dependency(%q<gem_hadar>.freeze, ["~> 1.7.1"])
|
|
45
|
+
s.add_dependency(%q<test-unit>.freeze, ["~> 3.0"])
|
|
46
|
+
s.add_dependency(%q<byebug>.freeze, [">= 0"])
|
|
47
|
+
s.add_dependency(%q<simplecov>.freeze, [">= 0"])
|
|
48
|
+
s.add_dependency(%q<mysql2>.freeze, ["~> 0.3.0"])
|
|
49
|
+
s.add_dependency(%q<activerecord>.freeze, ["~> 4.0"])
|
|
50
|
+
s.add_dependency(%q<tins>.freeze, ["~> 1.12.0"])
|
|
51
51
|
end
|
|
52
52
|
end
|
|
@@ -5,20 +5,26 @@ module ActiveRecord
|
|
|
5
5
|
module DatabaseMutex
|
|
6
6
|
class Implementation
|
|
7
7
|
|
|
8
|
+
class << self
|
|
9
|
+
attr_accessor :table_name
|
|
10
|
+
end
|
|
11
|
+
self.table_name = 'active_record_mutex_counters'
|
|
12
|
+
|
|
8
13
|
# Creates a mutex with the name given with the option :name.
|
|
9
14
|
def initialize(opts = {})
|
|
10
15
|
@name = opts[:name] or raise ArgumentError, "mutex requires a :name argument"
|
|
11
|
-
query %{ SET @old_autocommit = @@autocommit }
|
|
12
|
-
query %{ SET autocommit = 1 }
|
|
13
16
|
query %{
|
|
14
|
-
CREATE
|
|
17
|
+
CREATE TABLE IF NOT EXISTS #{table_name}
|
|
15
18
|
(
|
|
16
19
|
name CHAR(255) NOT NULL,
|
|
17
20
|
counter INT UNSIGNED NOT NULL DEFAULT 1,
|
|
18
21
|
PRIMARY KEY (name(128))
|
|
19
22
|
) DEFAULT CHARSET=utf8mb4
|
|
20
23
|
}
|
|
21
|
-
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def table_name
|
|
27
|
+
self.class.table_name
|
|
22
28
|
end
|
|
23
29
|
|
|
24
30
|
def db
|
|
@@ -136,7 +142,7 @@ module ActiveRecord
|
|
|
136
142
|
|
|
137
143
|
def increase_counter
|
|
138
144
|
query %{
|
|
139
|
-
INSERT INTO
|
|
145
|
+
INSERT INTO #{table_name} (name)
|
|
140
146
|
VALUES (#{quote(@name)})
|
|
141
147
|
ON DUPLICATE KEY UPDATE counter = counter + 1
|
|
142
148
|
}
|
|
@@ -144,14 +150,14 @@ module ActiveRecord
|
|
|
144
150
|
|
|
145
151
|
def decrease_counter
|
|
146
152
|
query %{
|
|
147
|
-
UPDATE
|
|
153
|
+
UPDATE #{table_name} SET counter = counter - 1
|
|
148
154
|
WHERE name = #{quote(@name)}
|
|
149
155
|
}
|
|
150
156
|
end
|
|
151
157
|
|
|
152
158
|
def counter_value
|
|
153
159
|
query(%{
|
|
154
|
-
SELECT counter FROM
|
|
160
|
+
SELECT counter FROM #{table_name}
|
|
155
161
|
WHERE name = #{quote(@name)}
|
|
156
162
|
}).to_i
|
|
157
163
|
end
|
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.3.
|
|
4
|
+
version: 2.3.8
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Florian Frank
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2016-09-
|
|
11
|
+
date: 2016-09-07 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: gem_hadar
|
|
@@ -160,7 +160,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
160
160
|
version: '0'
|
|
161
161
|
requirements: []
|
|
162
162
|
rubyforge_project:
|
|
163
|
-
rubygems_version: 2.
|
|
163
|
+
rubygems_version: 2.6.4
|
|
164
164
|
signing_key:
|
|
165
165
|
specification_version: 4
|
|
166
166
|
summary: Implementation of a Mutex for Active Record
|