ebisu_connection 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b135ecfde83d564cc7dcfbfaa7632f057fdf2fe1
4
- data.tar.gz: 39f3cdb331514ae4ea8d24d9e463f7287bd60dd9
3
+ metadata.gz: f7397a17d9b203b5278468bc1f0bbea7a315d133
4
+ data.tar.gz: 4d5904d664ec3ec2f05e4e2d6f327b0e59f683cf
5
5
  SHA512:
6
- metadata.gz: c59b5f27c126da53ff6a29e8f7604d69be14c0f0d55347ea01d20d0efad05a428765f21dfdfc160265167b26e7ad28135f118c875ae226bd9453c2cd721b0d1d
7
- data.tar.gz: f6ffaf1813892a30f3750d0a796170b36a0fc8e162644d436dcbc8e3640abd532dadf39786de1bec1206884e5190a08fd4c7317ece15643683110cfec28a447c
6
+ metadata.gz: 3940807ea924e4720501d3070c1a9cd51846a1f871c4923d8206770ca0435e092b2ddf3969e5210ca8c5fdb30250b215475d8c88e307950ffbff88c280b09785
7
+ data.tar.gz: 945d266756d44550d10bb26884d5a37978d022980757b6f9e07255c0de27a162a8d26c2674e238a5f5238bb434e6da8fa08d6a061b86f82f2afe1b10b0a96b27
@@ -19,7 +19,7 @@ Gem::Specification.new do |spec|
19
19
  spec.require_paths = ["lib"]
20
20
 
21
21
  spec.add_dependency 'activerecord', '>= 3.2.0'
22
- spec.add_dependency 'fresh_connection', '>= 0.1.2'
22
+ spec.add_dependency 'fresh_connection', '>= 0.1.6'
23
23
 
24
24
  spec.add_development_dependency "bundler", "~> 1.3"
25
25
  spec.add_development_dependency "rake"
@@ -22,6 +22,7 @@ module EbisuConnection
22
22
  end
23
23
 
24
24
  def put_aside!
25
+ return if check_own_connection
25
26
  return unless @file_mtime
26
27
 
27
28
  now = Time.now
@@ -32,11 +33,13 @@ module EbisuConnection
32
33
  mtime = File.mtime(self.class.slaves_file)
33
34
  return if @file_mtime == mtime
34
35
 
35
- clear_all_connection!
36
+ reserve_release_all_connection
37
+ check_own_connection
36
38
  end
37
39
 
38
40
  def clear_all_connection!
39
41
  @mutex.synchronize do
42
+ @slaves ||= {}
40
43
  @slaves.values.each do |s|
41
44
  s.all_disconnect!
42
45
  end
@@ -49,6 +52,31 @@ module EbisuConnection
49
52
 
50
53
  private
51
54
 
55
+ def check_own_connection
56
+ ret = false
57
+ @mutex.synchronize do
58
+ @slaves ||= {}
59
+ if s = @slaves[current_thread_id]
60
+ if ret = s.reserved_release?
61
+ s.all_disconnect!
62
+ @slaves.delete(current_thread_id)
63
+ end
64
+ end
65
+ end
66
+ ret
67
+ end
68
+
69
+ def reserve_release_all_connection
70
+ @mutex.synchronize do
71
+ @slaves ||= {}
72
+ @slaves.values.each do |s|
73
+ s.reserve_release_connection!
74
+ end
75
+ @slave_conf = nil
76
+ @spec = nil
77
+ end
78
+ end
79
+
52
80
  def slaves
53
81
  @mutex.synchronize do
54
82
  @slaves ||= {}
@@ -65,9 +65,18 @@ module EbisuConnection
65
65
  end
66
66
 
67
67
  def all_disconnect!
68
+ @reserve_release = nil
68
69
  @slaves.each {|s| s.disconnect!}
69
70
  end
70
71
 
72
+ def reserve_release_connection!
73
+ @reserve_release = true
74
+ end
75
+
76
+ def reserved_release?
77
+ !!@reserve_release
78
+ end
79
+
71
80
  private
72
81
 
73
82
  def get_gcd(list)
@@ -1,3 +1,3 @@
1
1
  module EbisuConnection
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ebisu_connection
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - tsukasaoishi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-12-12 00:00:00.000000000 Z
11
+ date: 2013-12-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - '>='
32
32
  - !ruby/object:Gem::Version
33
- version: 0.1.2
33
+ version: 0.1.6
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - '>='
39
39
  - !ruby/object:Gem::Version
40
- version: 0.1.2
40
+ version: 0.1.6
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement