active_record_mutex 2.3.7 → 2.3.8
Sign up to get free protection for your applications and to get access to all the features.
- 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
|