qu-mongo 0.1.2 → 0.1.3

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.
Files changed (2) hide show
  1. data/lib/qu/backend/mongo.rb +28 -1
  2. metadata +7 -7
@@ -3,6 +3,18 @@ require 'mongo'
3
3
  module Qu
4
4
  module Backend
5
5
  class Mongo < Base
6
+
7
+ # Number of times to retry connection on connection failure (default: 5)
8
+ attr_accessor :max_retries
9
+
10
+ # Seconds to wait before try to reconnect after connection failure (default: 1)
11
+ attr_accessor :retry_frequency
12
+
13
+ def initialize
14
+ self.max_retries = 5
15
+ self.retry_frequency = 1
16
+ end
17
+
6
18
  def connection
7
19
  @connection ||= begin
8
20
  uri = URI.parse(ENV['MONGOHQ_URL'].to_s)
@@ -118,8 +130,23 @@ module Qu
118
130
  end
119
131
 
120
132
  def [](name)
121
- database["qu.#{name}"]
133
+ rescue_connection_failure do
134
+ database["qu:#{name}"]
135
+ end
122
136
  end
137
+
138
+ def rescue_connection_failure
139
+ retries = 0
140
+ begin
141
+ yield
142
+ rescue ::Mongo::ConnectionFailure => ex
143
+ retries += 1
144
+ raise ex if retries > max_retries
145
+ sleep(retry_frequency * retries)
146
+ retry
147
+ end
148
+ end
149
+
123
150
  end
124
151
  end
125
152
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: qu-mongo
3
3
  version: !ruby/object:Gem::Version
4
- hash: 31
4
+ hash: 29
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 2
10
- version: 0.1.2
9
+ - 3
10
+ version: 0.1.3
11
11
  platform: ruby
12
12
  authors:
13
13
  - Brandon Keepers
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-10-05 00:00:00 -04:00
18
+ date: 2011-10-10 00:00:00 -04:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -40,12 +40,12 @@ dependencies:
40
40
  requirements:
41
41
  - - "="
42
42
  - !ruby/object:Gem::Version
43
- hash: 31
43
+ hash: 29
44
44
  segments:
45
45
  - 0
46
46
  - 1
47
- - 2
48
- version: 0.1.2
47
+ - 3
48
+ version: 0.1.3
49
49
  type: :runtime
50
50
  version_requirements: *id002
51
51
  - !ruby/object:Gem::Dependency