yogi_berra 0.0.14 → 0.0.15

Sign up to get free protection for your applications and to get access to all the features.
@@ -39,6 +39,5 @@ module YogiBerra
39
39
  error_id = YogiBerra.exceptionize(exception, environment)
40
40
  request.env['yogi_berra.error_id'] = error_id
41
41
  end
42
-
43
42
  end
44
43
  end
@@ -1,6 +1,7 @@
1
1
  require 'mongo'
2
2
  require 'facets'
3
3
  require 'yaml'
4
+ require 'timeout'
4
5
 
5
6
  module YogiBerra
6
7
  class Catcher
@@ -44,12 +45,16 @@ module YogiBerra
44
45
  def db_client(host, port, replica_set = nil)
45
46
  # :w => 0 set the default write concern to 0, this allows writes to be non-blocking
46
47
  # by not waiting for a response from mongodb
48
+ # :connect_timeout set to 5 will only wait 5 seconds failing to connect
47
49
  if replica_set
48
- @@mongo_client = Mongo::MongoReplicaSetClient.new(replica_set, :w => 0)
50
+ @@mongo_client = Mongo::MongoReplicaSetClient.new(replica_set, :w => 0, :connect_timeout => 5)
49
51
  else
50
- @@mongo_client = Mongo::MongoClient.new(host, port, :w => 0)
52
+ @@mongo_client = Mongo::MongoClient.new(host, port, :w => 0, :connect_timeout => 5)
51
53
  end
52
- rescue
54
+ rescue Timeout::Error => error
55
+ YogiBerra::Logger.log("Couldn't connect to the mongo database timeout on host: #{host} port: #{port}.\n #{error}", :error)
56
+ nil
57
+ rescue => error
53
58
  YogiBerra::Logger.log("Couldn't connect to the mongo database on host: #{host} port: #{port}.", :error)
54
59
  nil
55
60
  end
@@ -1,3 +1,3 @@
1
1
  module YogiBerra
2
- VERSION = "0.0.14"
2
+ VERSION = "0.0.15"
3
3
  end
data/spec/spec_helper.rb CHANGED
@@ -20,17 +20,25 @@ def build_session
20
20
  }
21
21
  end
22
22
 
23
- def mock_mongo_client(client_should = false, connection_should = false, auth = true)
24
- mongo_client = double('mongo client')
25
- mongo_connection = double('mongo connection')
26
- Mongo::MongoClient.should_receive(:new) { mongo_client }
27
- mongo_client.should_receive(:[]) { mongo_connection } if client_should
28
- mongo_connection.should_receive(:authenticate) if auth
29
- if connection_should
30
- mongo_connection.should_receive(:[]) { mongo_connection }
31
- mongo_connection.should_receive(:insert)
23
+ def mock_mongo_client(opts)
24
+ if opts[:timeout]
25
+ Timeout.should_receive(:timeout).and_raise(Timeout::Error)
26
+ else
27
+ mongo_client = double('mongo client')
28
+ mongo_connection = double('mongo connection')
29
+ Mongo::MongoClient.should_receive(:new) { mongo_client }
30
+ mongo_client.should_receive(:[]) { mongo_connection } if opts[:client_should]
31
+ if opts[:auth] == :error
32
+ mongo_connection.should_receive(:authenticate).and_raise
33
+ elsif opts[:auth].nil? || opts[:auth]
34
+ mongo_connection.should_receive(:authenticate)
35
+ end
36
+
37
+ if opts[:connection_should]
38
+ mongo_connection.should_receive(:[]) { mongo_connection }
39
+ mongo_connection.should_receive(:insert)
40
+ end
32
41
  end
33
- mongo_connection
34
42
  end
35
43
 
36
44
  def reset_if_rails
@@ -25,7 +25,7 @@ describe YogiBerra::Catcher do
25
25
  end
26
26
 
27
27
  it "should grab a connection using the settings file" do
28
- mock_mongo_client(true)
28
+ mock_mongo_client(:client_should => true)
29
29
  connection = nil
30
30
  YogiBerra::Catcher.load_db_settings(@test_yaml)
31
31
  connection = YogiBerra::Catcher.quick_connection
@@ -33,10 +33,30 @@ describe YogiBerra::Catcher do
33
33
  end
34
34
 
35
35
  it "should grab a connection to mongodb" do
36
- mock_mongo_client(false, false, false)
37
- yaml = nil
38
- yaml = YogiBerra::Catcher.load_db_settings(@test_yaml)
36
+ mock_mongo_client(:auth => false)
37
+ YogiBerra::Catcher.load_db_settings(@test_yaml)
39
38
  db_client = YogiBerra::Catcher.db_client(YogiBerra::Catcher.settings["host"], YogiBerra::Catcher.settings["port"])
40
39
  db_client.should_not == nil
41
40
  end
41
+
42
+ it "should grab a connection and fail to connect after 5 seconds" do
43
+ mock_mongo_client(:timeout => true)
44
+ YogiBerra::Catcher.load_db_settings(@test_yaml)
45
+ client = YogiBerra::Catcher.db_client(YogiBerra::Catcher.settings["host"], YogiBerra::Catcher.settings["port"])
46
+ client.should == nil
47
+ end
48
+
49
+ it "should grab a connection and authenticate" do
50
+ mock_mongo_client(:client_should => true)
51
+ YogiBerra::Catcher.load_db_settings(@test_yaml)
52
+ connection = YogiBerra::Catcher.quick_connection
53
+ connection.should_not == nil
54
+ end
55
+
56
+ it "should grab a connection and fail to authenticate" do
57
+ mock_mongo_client(:client_should => true, :auth => :error)
58
+ YogiBerra::Catcher.load_db_settings(@test_yaml)
59
+ connection = YogiBerra::Catcher.quick_connection
60
+ connection.should_not == nil
61
+ end
42
62
  end
@@ -8,7 +8,7 @@ describe YogiBerra::Data do
8
8
 
9
9
  it "should store an exception" do
10
10
  exception = build_exception
11
- mock_mongo_client(true, true)
11
+ mock_mongo_client(:client_should => true, :connection_should => true)
12
12
  YogiBerra::Catcher.quick_connection
13
13
  YogiBerra::Data.store!(exception)
14
14
  end
@@ -7,7 +7,7 @@ describe YogiBerra::ExceptionMiddleware do
7
7
  end
8
8
 
9
9
  it "should call the upstream app with the environment" do
10
- mock_mongo_client(true)
10
+ mock_mongo_client(:client_should => true)
11
11
  environment = { 'key' => 'value' }
12
12
  app = lambda { |env| ['response', {}, env] }
13
13
  stack = YogiBerra::ExceptionMiddleware.new(app)
@@ -20,7 +20,7 @@ describe YogiBerra::ExceptionMiddleware do
20
20
  end
21
21
 
22
22
  it "deliver an exception raised while calling an upstream app" do
23
- mock_mongo_client(true, true)
23
+ mock_mongo_client(:client_should => true, :connection_should => true)
24
24
  exception = build_exception
25
25
  environment = { 'key' => 'value' }
26
26
  app = lambda do |env|
@@ -36,7 +36,7 @@ describe YogiBerra::ExceptionMiddleware do
36
36
  end
37
37
 
38
38
  it "should deliver an exception in rack.exception" do
39
- mock_mongo_client(true, true)
39
+ mock_mongo_client(:client_should => true, :connection_should => true)
40
40
  exception = build_exception
41
41
  environment = { 'key' => 'value' }
42
42
 
metadata CHANGED
@@ -1,92 +1,112 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: yogi_berra
3
- version: !ruby/object:Gem::Version
4
- version: 0.0.14
3
+ version: !ruby/object:Gem::Version
4
+ hash: 1
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 15
10
+ version: 0.0.15
5
11
  platform: ruby
6
- authors:
12
+ authors:
7
13
  - Kevin Earl Krauss
8
14
  autorequire:
9
15
  bindir: bin
10
16
  cert_chain: []
11
- date: 2013-11-01 00:00:00.000000000 Z
12
- dependencies:
13
- - !ruby/object:Gem::Dependency
17
+
18
+ date: 2013-12-09 00:00:00 -08:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
14
22
  name: rake
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - '='
18
- - !ruby/object:Gem::Version
19
- version: 10.0.4
20
- type: :development
21
23
  prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - '='
25
- - !ruby/object:Gem::Version
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - "="
28
+ - !ruby/object:Gem::Version
29
+ hash: 71
30
+ segments:
31
+ - 10
32
+ - 0
33
+ - 4
26
34
  version: 10.0.4
27
- - !ruby/object:Gem::Dependency
28
- name: rspec
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - '='
32
- - !ruby/object:Gem::Version
33
- version: 2.13.0
34
35
  type: :development
36
+ version_requirements: *id001
37
+ - !ruby/object:Gem::Dependency
38
+ name: rspec
35
39
  prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - '='
39
- - !ruby/object:Gem::Version
40
+ requirement: &id002 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - "="
44
+ - !ruby/object:Gem::Version
45
+ hash: 59
46
+ segments:
47
+ - 2
48
+ - 13
49
+ - 0
40
50
  version: 2.13.0
41
- - !ruby/object:Gem::Dependency
51
+ type: :development
52
+ version_requirements: *id002
53
+ - !ruby/object:Gem::Dependency
42
54
  name: bson
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - '='
46
- - !ruby/object:Gem::Version
47
- version: 1.8.3
48
- type: :runtime
49
55
  prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - '='
53
- - !ruby/object:Gem::Version
54
- version: 1.8.3
55
- - !ruby/object:Gem::Dependency
56
- name: bson_ext
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - '='
60
- - !ruby/object:Gem::Version
56
+ requirement: &id003 !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - "="
60
+ - !ruby/object:Gem::Version
61
+ hash: 49
62
+ segments:
63
+ - 1
64
+ - 8
65
+ - 3
61
66
  version: 1.8.3
62
67
  type: :runtime
68
+ version_requirements: *id003
69
+ - !ruby/object:Gem::Dependency
70
+ name: bson_ext
63
71
  prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - '='
67
- - !ruby/object:Gem::Version
68
- version: 1.8.3
69
- - !ruby/object:Gem::Dependency
70
- name: mongo
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - '='
74
- - !ruby/object:Gem::Version
72
+ requirement: &id004 !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - "="
76
+ - !ruby/object:Gem::Version
77
+ hash: 49
78
+ segments:
79
+ - 1
80
+ - 8
81
+ - 3
75
82
  version: 1.8.3
76
83
  type: :runtime
84
+ version_requirements: *id004
85
+ - !ruby/object:Gem::Dependency
86
+ name: mongo
77
87
  prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - '='
81
- - !ruby/object:Gem::Version
88
+ requirement: &id005 !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - "="
92
+ - !ruby/object:Gem::Version
93
+ hash: 49
94
+ segments:
95
+ - 1
96
+ - 8
97
+ - 3
82
98
  version: 1.8.3
83
- description: If the world were perfect, it wouldn't be. So you need the best error
84
- catcher of all time!
99
+ type: :runtime
100
+ version_requirements: *id005
101
+ description: If the world were perfect, it wouldn't be. So you need the best error catcher of all time!
85
102
  email: earlkrauss@gmail.com
86
103
  executables: []
104
+
87
105
  extensions: []
106
+
88
107
  extra_rdoc_files: []
89
- files:
108
+
109
+ files:
90
110
  - lib/facets.rb
91
111
  - lib/yogi_berra/action_controller_catcher.rb
92
112
  - lib/yogi_berra/backtrace.rb
@@ -111,31 +131,41 @@ files:
111
131
  - spec/yogi_berra_data_spec.rb
112
132
  - spec/yogi_berra_exception_middleware_spec.rb
113
133
  - spec/yogi_berra_logger_spec.rb
134
+ has_rdoc: true
114
135
  homepage: http://github.com/earlonrails/yogi_berra
115
- licenses:
136
+ licenses:
116
137
  - MIT
117
- metadata: {}
118
138
  post_install_message:
119
139
  rdoc_options: []
120
- require_paths:
140
+
141
+ require_paths:
121
142
  - lib
122
- required_ruby_version: !ruby/object:Gem::Requirement
123
- requirements:
124
- - - ! '>='
125
- - !ruby/object:Gem::Version
126
- version: '0'
127
- required_rubygems_version: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - ! '>='
130
- - !ruby/object:Gem::Version
131
- version: '0'
143
+ required_ruby_version: !ruby/object:Gem::Requirement
144
+ none: false
145
+ requirements:
146
+ - - ">="
147
+ - !ruby/object:Gem::Version
148
+ hash: 3
149
+ segments:
150
+ - 0
151
+ version: "0"
152
+ required_rubygems_version: !ruby/object:Gem::Requirement
153
+ none: false
154
+ requirements:
155
+ - - ">="
156
+ - !ruby/object:Gem::Version
157
+ hash: 3
158
+ segments:
159
+ - 0
160
+ version: "0"
132
161
  requirements: []
162
+
133
163
  rubyforge_project:
134
- rubygems_version: 2.1.10
164
+ rubygems_version: 1.3.7
135
165
  signing_key:
136
- specification_version: 4
166
+ specification_version: 3
137
167
  summary: Catches errors in your rails app and doesn't get in the way.
138
- test_files:
168
+ test_files:
139
169
  - spec/fixtures/config/yogi.yml
140
170
  - spec/fixtures/rails.rb
141
171
  - spec/fixtures/test.yml
checksums.yaml DELETED
@@ -1,15 +0,0 @@
1
- ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- NDllMDIyZTlmZjdiOGFkZDY3MWFmMGNlZTc5NTBjNmRiMTNiNWJmNQ==
5
- data.tar.gz: !binary |-
6
- ZTcyMDg3Njc1YzAzYWExMGMwNDAzMDAzYWU2MjBmMTEyMDhhMGVkYg==
7
- SHA512:
8
- metadata.gz: !binary |-
9
- MjRjYjgwZmFkMDU5ODY2OGI4YWE0MjlkZDU4ZThiNmVmOTRhZDI3Yzg2ZDk0
10
- NGE3NTU1YmUzMDQ1NTNhY2ZmYzlkOThjMzQ1MjYyNmMyZDA2NWIwMjk0MWZm
11
- ZmQ1YzhmNGYwNjg3ZWRlZmNiZGQ1YzE0YzU4YzlhNTc5NDY4OWM=
12
- data.tar.gz: !binary |-
13
- NTU5MGY2MTNkNDhlM2VkZTgzNmRjMzcwY2RhMzk5MDAzNDM2NWU3MDRhZmE0
14
- ZDU0ODhmZWZkYWEyMDNkMTdhZTZlMmViYTM3MzFlZWE3ODMwNDhkZTVjMWEy
15
- NzEwMjQ3ZDhkNWM0MWQxMzcyZDQyMzgzMTcwZTc5Yzg5YTQ1Yzc=