ebisu_connection 0.0.1 → 0.0.2

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 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