mongo_request_logger 0.2.7 → 0.3.0

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: 7bee44b6c8d96b9e6a214308f9509e5516b896db
4
- data.tar.gz: 4546dd6af95b6367f3a65b316ef70bc5f229c31f
3
+ metadata.gz: 660d6aa96f97e5ca818a92abef7fc96544ea2cbd
4
+ data.tar.gz: 6859e94ceb5658485f79340d52c6798cf3e7db70
5
5
  SHA512:
6
- metadata.gz: 5cbc2ace680b82bd8afe5c82b0c7b7c1cefffb91ffd8906568a26b51e18d31e8ba2271b59b987f52d44040e3ddae9e2e4134ab414416991cf9525937b60b8a9b
7
- data.tar.gz: 431ddf7e4c17c78ae9b2045ac08e40367dbe2986639b2442da51a8e1f471a0de57596dd9191b8b08bcb4e6f19e688ea44a55a43f73d673eb6d59612c07955cf7
6
+ metadata.gz: 2173487a90d1d0ab9cd8c6a9f406606fbcf0e3e806706dcd4ade311ea820eee7330d3d9f465b6167728b015aa215ab5eead698deba5d59dc164c7f4f2c681381
7
+ data.tar.gz: fdef6ac1a55a2a2736addde2c160e316d151122e25948a55e8bdba06d6e39bc56ead26e87435eba2fd2eaa0a271e567ce65dc0860e0c779cdeef0048d1357453
data/.gitignore CHANGED
@@ -14,4 +14,6 @@ spec/reports
14
14
  test/tmp
15
15
  test/version_tmp
16
16
  tmp
17
- **.log
17
+ **.log
18
+ Gemfile.lock
19
+ gemfiles/*.lock
data/.travis.yml CHANGED
@@ -4,6 +4,8 @@ env:
4
4
  - CI=true
5
5
  rvm:
6
6
  - 1.9.3
7
+ - 2.0.0
8
+ - 2.1.1
7
9
 
8
10
  gemfile:
9
11
  - gemfiles/sinatra1.3.gemfile
data/CHANGELOG.md CHANGED
@@ -1,10 +1,15 @@
1
+ ## 0.3.0
2
+
3
+ * Improved config parsing for the Moped driver.
4
+ * Fixed some minor bugs on web portal.
5
+
1
6
  ## 0.2.7
2
7
 
3
8
  * Ensure that the collection is created on the primary node in a replica set, even if the session consistency is set to :eventual.
4
9
 
5
10
  ## 0.2.6
6
11
 
7
- * Handle forking with Unicorn and Passenger (Moped driver only).
12
+ * Handle forking with Unicorn and Passenger (Moped driver only. Requires Moped 1.2.0 + ).
8
13
 
9
14
  ## 0.2.5
10
15
 
Binary file
@@ -76,7 +76,8 @@
76
76
  <tr>
77
77
  <td colspan="10">
78
78
  <ng-switch on="log_footer()">
79
- <span ng-switch-when="no_matches">No logs matched your criteria</span>
79
+ <span ng-switch-when="no_matches && mongo_query">No logs matched your criteria</span>
80
+ <span ng-switch-when="no_matches && !mongo_query">Searching...</span>
80
81
  <span ng-switch-when="end">End of results</span>
81
82
  <span ng-switch-default>
82
83
  <button class="btn" ng-click="get_more_results()">Show more results</button>
@@ -7,7 +7,7 @@
7
7
  <tr ui-if="log.exception"><td>Error</td><td>{{ log.exception }}</td></tr>
8
8
  <tr><td>Tags</td><td>{{ tags() }}</td></tr>
9
9
  <tr ui-if="log.args"><td>Args</td><td>{{ log.args }}</td></tr>
10
- <tr ui-if="log.params"><td>Params</td><td>{{ log.params }}</td></tr>
10
+ <tr ui-if="log.data.params"><td>Params</td><td>{{ log.data.params | json }}</td></tr>
11
11
  <tr ng-repeat="line in extra"><td>{{line.key}}</td><td>{{line.value | truncate:150 }}</td></tr>
12
12
  </table>
13
13
 
data/config.ru CHANGED
@@ -2,7 +2,7 @@
2
2
  require 'moped'
3
3
  require 'mongo_request_logger/viewer'
4
4
 
5
- config = {database: ENV['DB'] || 'request_logger_test', collection: 'server_log', capsize: 10*1024*1024}
5
+ config = {database: ENV['DB'] || 'request_logger_test', collection: 'server_log', capsize: 10}
6
6
 
7
7
  MongoRequestLogger::Viewer.adapter = MongoRequestLogger::Adapters::Moped.new(config)
8
8
 
@@ -7,7 +7,7 @@ module MongoRequestLogger
7
7
  attr_reader :configuration, :connection, :connection_type, :collection, :authenticated
8
8
 
9
9
  def collection_name
10
- @configuration['collection']
10
+ @configuration.collection
11
11
  end
12
12
 
13
13
  def authenticated?
@@ -16,8 +16,8 @@ module MongoRequestLogger
16
16
 
17
17
  def check_for_collection
18
18
  # setup the capped collection if it doesn't already exist
19
- create_collection unless @connection.collection_names.include?(@configuration['collection'])
20
- @collection = @connection[@configuration['collection']]
19
+ create_collection unless @connection.collection_names.include?(collection_name)
20
+ @collection = @connection[collection_name]
21
21
  end
22
22
 
23
23
  def reset_collection
@@ -1,36 +1,26 @@
1
1
  # Adapted from https://github.com/le0pard/mongodb_logger/
2
2
 
3
3
  require 'mongo_request_logger/adapters/base'
4
+ require 'mongo_request_logger/config'
4
5
 
5
6
  module MongoRequestLogger
6
7
  module Adapters
7
8
  class Mongo < Base
8
9
 
9
10
  def initialize(options = {})
10
- @authenticated = false
11
- @configuration = options.with_indifferent_access
12
- @configuration['host'] ||= '127.0.0.1'
13
- @configuration['port'] ||= '27017'
14
- @configuration['collection'] ||= 'server_log'
11
+ options = MongoRequestLogger::Config.new(options) unless options.is_a? MongoRequestLogger::Config
12
+ @configuration = options
15
13
 
14
+ mongo_connection_object
16
15
  connect
17
16
 
18
17
  check_for_collection
19
18
  end
20
19
 
21
20
  def connect
22
- if @configuration['url']
23
- uri = URI.parse(@configuration['url'])
24
- @configuration['database'] = uri.path.gsub(/^\//, '')
25
- @connection ||= mongo_connection_object.db(@configuration['database'])
26
- @authenticated = true
27
- else
28
- @connection ||= mongo_connection_object.db(@configuration['database'])
29
- if @configuration['username'] && @configuration['password']
30
- # the driver stores credentials in case reconnection is required
31
- @authenticated = @connection.authenticate(@configuration['username'],
32
- @configuration['password'])
33
- end
21
+ @connection ||= mongo_connection_object.db(@configuration.database)
22
+ if @configuration.credentials
23
+ @authenticated = @connection.authenticate(*@configuration.credentials)
34
24
  end
35
25
  end
36
26
 
@@ -75,15 +65,19 @@ module MongoRequestLogger
75
65
  private
76
66
 
77
67
  def mongo_connection_object
78
- if @configuration['hosts']
79
- conn = ::Mongo::ReplSetConnection.new(*(@configuration['hosts'] <<
68
+ hosts = @configuration.hosts
69
+ if @configuration['uri']
70
+ ::Mongo::Connection.from_uri(@configuration['uri'])
71
+ elsif hosts.count > 1
72
+ conn = ::Mongo::ReplSetConnection.new(*(hosts <<
80
73
  {:connect => true, :pool_timeout => 6}))
81
- @configuration['replica_set'] = true
82
- elsif @configuration['url']
83
- conn = ::Mongo::Connection.from_uri(@configuration['url'])
74
+ @configuration['replica_set'] = true # is this correct?
84
75
  else
85
- conn = ::Mongo::Connection.new(@configuration['host'],
86
- @configuration['port'],
76
+ host = @configuration['host'] || '127.0.0.1'
77
+ port = @configuration['port'] || '27017'
78
+
79
+ conn = ::Mongo::Connection.new(host,
80
+ port,
87
81
  :connect => true,
88
82
  :pool_timeout => 6)
89
83
  end
@@ -2,6 +2,7 @@
2
2
 
3
3
  require 'mongo_request_logger/adapters/base'
4
4
  require 'active_support/core_ext/hash/indifferent_access'
5
+ require 'mongo_request_logger/config'
5
6
 
6
7
  module MongoRequestLogger
7
8
  module Adapters
@@ -12,32 +13,22 @@ module MongoRequestLogger
12
13
 
13
14
 
14
15
  def initialize(options = {})
15
- @configuration = options.with_indifferent_access
16
- @configuration['host'] ||= '127.0.0.1'
17
- @configuration['port'] ||= '27017'
18
- @configuration['collection'] ||= 'server_log'
19
-
20
- if @configuration['url']
21
- uri = URI.parse(@configuration['url'])
22
- @configuration['database'] = uri.path.gsub(/^\//, '')
23
- @connection ||= mongo_connection_object
24
- @connection.use @configuration['database']
25
- @authenticated = true
26
- else
27
- @connection ||= mongo_connection_object
28
- @connection.use @configuration['database']
29
-
30
- login
31
- end
16
+ options = MongoRequestLogger::Config.new(options) unless options.is_a? MongoRequestLogger::Config
17
+ @configuration = options
18
+ @connection = ::Moped::Session.new(*options.moped_arguments)
19
+
20
+ login
21
+
22
+ MongoRequestLogger::Adapters::Moped.connection = @connection
23
+
24
+ @connection_type = @connection.class
32
25
 
33
26
  check_for_collection
34
27
  end
35
28
 
36
29
  def login
37
- if @configuration['username'] && @configuration['password']
38
- # the driver stores credentials in case reconnection is required
39
- @authenticated = @connection.login(@configuration['username'],
40
- @configuration['password'])
30
+ if @configuration.credentials
31
+ @authenticated = @connection.login(*@configuration.credentials)
41
32
  end
42
33
 
43
34
  # Allow MongoDB configured both with and without authentication
@@ -51,7 +42,7 @@ module MongoRequestLogger
51
42
 
52
43
  def create_collection
53
44
  @connection.cluster.with_primary do |node|
54
- node.command(@configuration['database'], {create: collection_name, capped: true, size: @configuration['capsize'].to_i*1024*1024})
45
+ node.command(@configuration.database, {create: collection_name, capped: true, size: @configuration.capsize})
55
46
  end
56
47
  end
57
48
 
@@ -84,22 +75,6 @@ module MongoRequestLogger
84
75
  @collection.drop
85
76
  end
86
77
 
87
- private
88
-
89
- def mongo_connection_object
90
- if @configuration['hosts']
91
- conn = ::Moped::Session.new(@configuration['hosts'].map{|(host,port)| "#{host}:#{port}"}, :timeout => 6)
92
- @configuration['replica_set'] = true
93
- elsif @configuration['url']
94
- conn = ::Moped::Session.connect(@configuration['url'])
95
- else
96
- conn = ::Moped::Session.new(["#{@configuration['host']}:#{@configuration['port']}"], :timeout => 6)
97
- end
98
- @connection_type = conn.class
99
-
100
- MongoRequestLogger::Adapters::Moped.connection = conn
101
- conn
102
- end
103
78
 
104
79
  end
105
80
  end
@@ -1,5 +1,11 @@
1
1
  require 'yaml'
2
2
 
3
+ begin
4
+ require 'moped/mongo_uri'
5
+ rescue LoadError
6
+ # Ignore
7
+ end
8
+
3
9
  module MongoRequestLogger
4
10
  class Config
5
11
  attr_accessor :raw_config
@@ -7,14 +13,13 @@ module MongoRequestLogger
7
13
  attr_accessor :namespace
8
14
 
9
15
  def initialize(config=nil)
10
- @raw_config = {}
11
16
  @params = {}
12
17
  @namespace = nil
13
- load_config(config) unless config.nil?
18
+ load_config(config.stringify_keys) unless config.nil?
14
19
  end
15
20
 
16
21
  def namespaced(namespace)
17
- config = deep_merge(@raw_config['common'], @raw_config[namespace])
22
+ config = deep_merge(@params['common'], @params[namespace])
18
23
  ac = self.class.new(config)
19
24
  ac.namespace = namespace
20
25
  ac
@@ -22,7 +27,7 @@ module MongoRequestLogger
22
27
 
23
28
 
24
29
  def namespaces
25
- @raw_config.keys - %w(common)
30
+ @params.keys - %w(common)
26
31
  end
27
32
 
28
33
  def load_file(file)
@@ -36,30 +41,21 @@ module MongoRequestLogger
36
41
 
37
42
  def deep_merge(a, b)
38
43
  if a.is_a? Hash and b.is_a? Hash
39
- r = a.dup
44
+ r = a.stringify_keys
45
+ b = b.stringify_keys
40
46
  for k, v in b
41
47
  r[k] = deep_merge(a[k], v)
42
48
  end
43
49
  r
44
50
  elsif b.is_a? Hash
45
- b.dup
51
+ b.stringify_keys
46
52
  else
47
53
  b
48
54
  end
49
55
  end
50
56
 
51
57
  def load_config(config)
52
- @raw_config = deep_merge(@raw_config, config)
53
- @params = {}
54
- @raw_config.each { |k, v|
55
- if v.is_a? Hash
56
- @params[k] = self.class.new(v)
57
- else
58
- @params[k] = v
59
- end
60
- }
61
-
62
- create_accessors!
58
+ @params = deep_merge(@params, config)
63
59
  end
64
60
 
65
61
  def has?(param)
@@ -82,28 +78,88 @@ module MongoRequestLogger
82
78
  self
83
79
  end
84
80
 
85
- def create_accessors!
86
- @params.each do |key,val|
87
- create_accessor_for(key)
81
+ def to_hash
82
+ @params.symbolize_keys
83
+ end
84
+
85
+ def hosts
86
+ if self['hosts']
87
+ return self['hosts']
88
+ elsif self.moped_uri
89
+ return self.moped_uri.hosts
90
+ else
91
+ host = self['host'] || '127.0.0.1'
92
+ port = self['port'] || 27017
93
+ return ["#{host}:#{port}"]
88
94
  end
89
95
  end
90
96
 
91
- # Use instance_eval/class_eval because they're actually more efficient than define_method{}
92
- # http://stackoverflow.com/questions/185947/ruby-definemethod-vs-def
93
- # http://bmorearty.wordpress.com/2009/01/09/fun-with-rubys-instance_eval-and-class_eval/
94
- def create_accessor_for(key)
95
- key = key.to_s
96
- return unless key =~ /^[\w_]+$/ # could have "some-setting:" which blows up eval
97
+ def credentials
98
+ if moped_uri && moped_uri.auth_provided?
99
+ [moped_uri.username, moped_uri.password]
100
+ elsif self['username'] && self['password']
101
+ [self['username'], self['password']]
102
+ else
103
+ nil
104
+ end
105
+ end
97
106
 
98
- self.class.class_eval <<-EndEval
99
- def #{key}
100
- return @params["#{key}"]
101
- end
107
+ def database
108
+ if self['database']
109
+ self['database']
110
+ elsif moped_uri
111
+ moped_uri.database
112
+ else
113
+ nil
114
+ end
115
+ end
102
116
 
103
- def #{key}= value
104
- @params["#{key}"] = value
105
- end
106
- EndEval
117
+ def collection
118
+ self['collection'] || 'server_log'
119
+ end
120
+
121
+ def capsize
122
+ self['capsize'].to_i*1024*1024
123
+ end
124
+
125
+ def moped_uri
126
+ if self['uri'] && defined? ::Moped::MongoUri
127
+ ::Moped::MongoUri.new(self['uri'])
128
+ else
129
+ nil
130
+ end
131
+ end
132
+
133
+ def moped_config
134
+ args = {}
135
+
136
+ if moped_uri
137
+ args = moped_uri.moped_arguments[1]
138
+ end
139
+
140
+ args[:database] = self.database
141
+
142
+ exclude = %w(host port hosts uri collection database capsize)
143
+
144
+ @params.each do |key, value|
145
+ next if exclude.include? key
146
+ args[key.to_sym] = cast(value)
147
+ end
148
+
149
+ args
150
+ end
151
+
152
+ def moped_arguments
153
+ [hosts, moped_config]
154
+ end
155
+
156
+ private
157
+ def cast(value)
158
+ if value.is_a? String
159
+ value.to_sym
160
+ else
161
+ value
162
+ end
107
163
  end
108
164
  end
109
165
  end
@@ -1,3 +1,3 @@
1
1
  module MongoRequestLogger
2
- VERSION = '0.2.7'
2
+ VERSION = '0.3.0'
3
3
  end
@@ -0,0 +1,130 @@
1
+ require 'spec_helper'
2
+ require 'mongo_request_logger/config'
3
+ require 'mongo'
4
+
5
+ include MongoRequestLogger
6
+
7
+ describe MongoRequestLogger::Config do
8
+
9
+ it "should namespace" do
10
+ pending
11
+ end
12
+
13
+ it "should handle a simple case" do
14
+ config = MongoRequestLogger::Config.new({
15
+ host: 'example.org',
16
+ port: 1234,
17
+ database: 'request_logger_test',
18
+ collection: 'server_log',
19
+ capsize: 10,
20
+ })
21
+
22
+ config.hosts.should == ['example.org:1234']
23
+ config.moped_config.should == {database: 'request_logger_test'}
24
+ end
25
+
26
+ it "should default to localhost:27017" do
27
+ config = MongoRequestLogger::Config.new({
28
+ database: 'request_logger_test',
29
+ collection: 'server_log',
30
+ capsize: 10,
31
+ })
32
+
33
+ config.hosts.should == ['127.0.0.1:27017']
34
+ config.moped_config.should == {database: 'request_logger_test'}
35
+
36
+ config.database.should == 'request_logger_test'
37
+ config.collection.should == 'server_log'
38
+ config.capsize.should == 10485760
39
+ end
40
+
41
+ it "should configure with a host array" do
42
+ config = MongoRequestLogger::Config.new({
43
+ hosts: [
44
+ 'node1.example.org:27017',
45
+ 'node2.localhost:27017',
46
+ ],
47
+ database: 'request_logger_test',
48
+ collection: 'server_log',
49
+ capsize: 10,
50
+ })
51
+
52
+ config.hosts.should == [
53
+ 'node1.example.org:27017',
54
+ 'node2.localhost:27017',
55
+ ]
56
+ config.moped_config.should == {database: 'request_logger_test'}
57
+ end
58
+
59
+ it "should pass through options" do
60
+ # This should work similarly for ssl: true. Unfortunately, we don't have a
61
+ # ssl host to test against.
62
+ config = MongoRequestLogger::Config.new({
63
+ consistency: 'strong',
64
+ timeout: 30,
65
+ ssl: true,
66
+ database: 'request_logger_test',
67
+ collection: 'server_log',
68
+ capsize: 10,
69
+ })
70
+
71
+ config.moped_config.should == {
72
+ timeout: 30,
73
+ ssl: true,
74
+ consistency: :strong,
75
+ database: 'request_logger_test'
76
+ }
77
+ end
78
+
79
+ context "when configured with an URI" do
80
+ it "should configure with a single host" do
81
+ config = MongoRequestLogger::Config.new({
82
+ uri: 'mongodb://example.org:1234/request_logger_test',
83
+ collection: 'server_log',
84
+ capsize: 10
85
+ })
86
+
87
+ config.database.should == 'request_logger_test'
88
+ config.collection.should == 'server_log'
89
+ config.capsize.should == 10485760
90
+
91
+ config.hosts.should == ['example.org:1234']
92
+ config.moped_config.should == {database: 'request_logger_test'}
93
+ end
94
+
95
+ it "should configure with multiple hosts" do
96
+ # We only have a single real host to connect to, so we add it multiple times
97
+ config = MongoRequestLogger::Config.new({
98
+ uri: 'mongodb://node1.example.org:1234,node2.example.org:1234/request_logger_test',
99
+ collection: 'server_log',
100
+ capsize: 10
101
+ })
102
+
103
+ config.database.should == 'request_logger_test'
104
+ config.collection.should == 'server_log'
105
+
106
+ config.hosts.should == ['node1.example.org:1234', 'node2.example.org:1234']
107
+ config.moped_config.should == {database: 'request_logger_test'}
108
+ end
109
+
110
+ it "should configure with URI options" do
111
+ config = MongoRequestLogger::Config.new({
112
+ uri: 'mongodb://example.org:1234/request_logger_test?consistency=strong&timeout=30&ssl=true',
113
+ collection: 'server_log',
114
+ capsize: 10
115
+ })
116
+
117
+ config.database.should == 'request_logger_test'
118
+ config.collection.should == 'server_log'
119
+
120
+ config.hosts.should == ['example.org:1234']
121
+ config.moped_config.should == {
122
+ consistency: :strong,
123
+ timeout: 30,
124
+ ssl: true,
125
+ database: 'request_logger_test'
126
+ }
127
+ end
128
+ end
129
+
130
+ end
@@ -36,4 +36,112 @@ describe 'MongoRequestLogger::Logger with moped' do
36
36
  end
37
37
 
38
38
  include_examples "log"
39
+
40
+ context "when configured with a simple config hash" do
41
+ it "should configure with a single host" do
42
+ config = {
43
+ host: 'localhost',
44
+ port: 27017,
45
+ database: 'request_logger_test',
46
+ collection: 'server_log',
47
+ capsize: 10,
48
+ }
49
+
50
+ adapter = MongoRequestLogger::Adapters::Moped.new(config)
51
+ connection = adapter.connection
52
+ connection.options[:database].should == 'request_logger_test'
53
+ connection.consistency.should == :eventual # The default
54
+ connection.cluster.nodes.first.resolved_address.should == '127.0.0.1:27017'
55
+ end
56
+
57
+ it "should configure with a host array" do
58
+ config = {
59
+ hosts: [
60
+ 'localhost:27017',
61
+ 'localhost:27017',
62
+ ],
63
+ database: 'request_logger_test',
64
+ collection: 'server_log',
65
+ capsize: 10,
66
+ }
67
+
68
+ adapter = MongoRequestLogger::Adapters::Moped.new(config)
69
+ connection = adapter.connection
70
+ connection.options[:database].should == 'request_logger_test'
71
+ connection.cluster.nodes[0].resolved_address.should == '127.0.0.1:27017'
72
+ connection.cluster.nodes[1].resolved_address.should == '127.0.0.1:27017'
73
+ end
74
+
75
+ it "should pass through options" do
76
+ # This should work similarly for ssl: true. Unfortunately, we don't have a
77
+ # ssl host to test against.
78
+ config = {
79
+ host: 'localhost',
80
+ port: 27017,
81
+ consistency: 'strong',
82
+ timeout: 30,
83
+ database: 'request_logger_test',
84
+ collection: 'server_log',
85
+ capsize: 10,
86
+ }
87
+
88
+ adapter = MongoRequestLogger::Adapters::Moped.new(config)
89
+ connection = adapter.connection
90
+ connection.options[:database].should == 'request_logger_test'
91
+ connection.options[:timeout].should == 30
92
+ connection.options[:consistency].should == :strong
93
+ connection.consistency.should == :strong
94
+
95
+ connection.cluster.nodes[0].resolved_address.should == '127.0.0.1:27017'
96
+ end
97
+ end
98
+
99
+ context "when configured with an URI" do
100
+ it "should configure with a single host" do
101
+ config = {
102
+ uri: 'mongodb://localhost:27017/request_logger_test',
103
+ collection: 'server_log',
104
+ capsize: 10,
105
+ }
106
+
107
+ adapter = MongoRequestLogger::Adapters::Moped.new(config)
108
+ connection = adapter.connection
109
+ connection.options[:database].should == 'request_logger_test'
110
+ connection.consistency.should == :eventual # The default
111
+ connection.cluster.nodes.first.resolved_address.should == '127.0.0.1:27017'
112
+ end
113
+
114
+ it "should configure with multiple hosts" do
115
+ # We only have a single real host to connect to, so we add it multiple times
116
+ config = {
117
+ uri: 'mongodb://localhost:27017,localhost:27017/request_logger_test',
118
+ collection: 'server_log',
119
+ capsize: 10,
120
+ }
121
+
122
+ adapter = MongoRequestLogger::Adapters::Moped.new(config)
123
+ connection = adapter.connection
124
+ connection.options[:database].should == 'request_logger_test'
125
+ connection.cluster.nodes[0].resolved_address.should == '127.0.0.1:27017'
126
+ connection.cluster.nodes[1].resolved_address.should == '127.0.0.1:27017'
127
+ end
128
+
129
+ it "should configure with URI options" do
130
+ # This should work similarly for ssl=true. Unfortunately, we don't have a
131
+ # ssl host to test against.
132
+ config = {
133
+ uri: 'mongodb://localhost:27017/request_logger_test?consistency=strong',
134
+ collection: 'server_log',
135
+ capsize: 10,
136
+ }
137
+
138
+ adapter = MongoRequestLogger::Adapters::Moped.new(config)
139
+ connection = adapter.connection
140
+ connection.options[:database].should == 'request_logger_test'
141
+ connection.options[:consistency].should == :strong
142
+ connection.consistency.should == :strong
143
+
144
+ connection.cluster.nodes[0].resolved_address.should == '127.0.0.1:27017'
145
+ end
146
+ end
39
147
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongo_request_logger
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.7
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Embark Mobile
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-07-22 00:00:00.000000000 Z
11
+ date: 2014-03-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sinatra
@@ -63,7 +63,6 @@ files:
63
63
  - .travis.yml
64
64
  - CHANGELOG.md
65
65
  - Gemfile
66
- - Gemfile.lock
67
66
  - LICENSE.txt
68
67
  - README.md
69
68
  - Rakefile
@@ -278,6 +277,7 @@ files:
278
277
  - angular/app/img/flags/sn.png
279
278
  - angular/app/img/flags/so.png
280
279
  - angular/app/img/flags/sr.png
280
+ - angular/app/img/flags/ss.png
281
281
  - angular/app/img/flags/st.png
282
282
  - angular/app/img/flags/sv.png
283
283
  - angular/app/img/flags/sy.png
@@ -372,9 +372,7 @@ files:
372
372
  - angular/test/unit/servicesSpec.js
373
373
  - config.ru
374
374
  - gemfiles/sinatra1.3.gemfile
375
- - gemfiles/sinatra1.3.gemfile.lock
376
375
  - gemfiles/sinatra1.4.gemfile
377
- - gemfiles/sinatra1.4.gemfile.lock
378
376
  - lib/mongo_request_logger.rb
379
377
  - lib/mongo_request_logger/adapters/base.rb
380
378
  - lib/mongo_request_logger/adapters/mongo.rb
@@ -393,6 +391,7 @@ files:
393
391
  - lib/mongo_request_logger/version.rb
394
392
  - lib/mongo_request_logger/viewer.rb
395
393
  - mongo_request_logger.gemspec
394
+ - spec/config_spec.rb
396
395
  - spec/dummy/application.rb
397
396
  - spec/dummy/config/logger.yml
398
397
  - spec/dummy/log/.gitkeep
@@ -427,11 +426,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
427
426
  version: '0'
428
427
  requirements: []
429
428
  rubyforge_project:
430
- rubygems_version: 2.0.2
429
+ rubygems_version: 2.0.3
431
430
  signing_key:
432
431
  specification_version: 4
433
432
  summary: Structured logger and log viewer for Rack (including Rails) requests
434
433
  test_files:
434
+ - spec/config_spec.rb
435
435
  - spec/dummy/application.rb
436
436
  - spec/dummy/config/logger.yml
437
437
  - spec/dummy/log/.gitkeep
data/Gemfile.lock DELETED
@@ -1,61 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- mongo_request_logger (0.2.7)
5
- activesupport (~> 3.0)
6
- sinatra (>= 1.3.2)
7
- sinatra-contrib
8
-
9
- GEM
10
- remote: https://rubygems.org/
11
- specs:
12
- activesupport (3.2.13)
13
- i18n (= 0.6.1)
14
- multi_json (~> 1.0)
15
- backports (3.3.3)
16
- bson (1.8.5)
17
- bson_ext (1.8.5)
18
- bson (~> 1.8.5)
19
- diff-lcs (1.2.3)
20
- eventmachine (1.0.3)
21
- i18n (0.6.1)
22
- mongo (1.8.5)
23
- bson (~> 1.8.5)
24
- moped (1.4.5)
25
- multi_json (1.7.7)
26
- rack (1.5.2)
27
- rack-protection (1.5.0)
28
- rack
29
- rack-test (0.6.2)
30
- rack (>= 1.0)
31
- rspec (2.13.0)
32
- rspec-core (~> 2.13.0)
33
- rspec-expectations (~> 2.13.0)
34
- rspec-mocks (~> 2.13.0)
35
- rspec-core (2.13.1)
36
- rspec-expectations (2.13.0)
37
- diff-lcs (>= 1.1.3, < 2.0)
38
- rspec-mocks (2.13.1)
39
- sinatra (1.4.2)
40
- rack (~> 1.5, >= 1.5.2)
41
- rack-protection (~> 1.4)
42
- tilt (~> 1.3, >= 1.3.4)
43
- sinatra-contrib (1.4.0)
44
- backports (>= 2.0)
45
- eventmachine
46
- rack-protection
47
- rack-test
48
- sinatra (~> 1.4.2)
49
- tilt (~> 1.3)
50
- tilt (1.3.7)
51
-
52
- PLATFORMS
53
- ruby
54
-
55
- DEPENDENCIES
56
- bson_ext
57
- mongo
58
- mongo_request_logger!
59
- moped
60
- rspec
61
- sinatra (~> 1.4.0)
@@ -1,130 +0,0 @@
1
- PATH
2
- remote: /Users/john/src/mongo_request_logger
3
- specs:
4
- mongo_request_logger (0.2.7)
5
- activesupport (~> 3.0)
6
- sinatra (>= 1.3.2)
7
- sinatra-contrib
8
-
9
- GEM
10
- remote: https://rubygems.org/
11
- specs:
12
- actionmailer (3.2.13)
13
- actionpack (= 3.2.13)
14
- mail (~> 2.5.3)
15
- actionpack (3.2.13)
16
- activemodel (= 3.2.13)
17
- activesupport (= 3.2.13)
18
- builder (~> 3.0.0)
19
- erubis (~> 2.7.0)
20
- journey (~> 1.0.4)
21
- rack (~> 1.4.5)
22
- rack-cache (~> 1.2)
23
- rack-test (~> 0.6.1)
24
- sprockets (~> 2.2.1)
25
- activemodel (3.2.13)
26
- activesupport (= 3.2.13)
27
- builder (~> 3.0.0)
28
- activerecord (3.2.13)
29
- activemodel (= 3.2.13)
30
- activesupport (= 3.2.13)
31
- arel (~> 3.0.2)
32
- tzinfo (~> 0.3.29)
33
- activeresource (3.2.13)
34
- activemodel (= 3.2.13)
35
- activesupport (= 3.2.13)
36
- activesupport (3.2.13)
37
- i18n (= 0.6.1)
38
- multi_json (~> 1.0)
39
- arel (3.0.2)
40
- backports (3.3.3)
41
- bson (1.8.5)
42
- bson_ext (1.8.5)
43
- bson (~> 1.8.5)
44
- builder (3.0.4)
45
- diff-lcs (1.2.3)
46
- erubis (2.7.0)
47
- eventmachine (1.0.3)
48
- hike (1.2.2)
49
- i18n (0.6.1)
50
- journey (1.0.4)
51
- json (1.7.7)
52
- mail (2.5.3)
53
- i18n (>= 0.4.0)
54
- mime-types (~> 1.16)
55
- treetop (~> 1.4.8)
56
- mime-types (1.22)
57
- mongo (1.8.5)
58
- bson (~> 1.8.5)
59
- moped (1.4.5)
60
- multi_json (1.7.2)
61
- polyglot (0.3.3)
62
- rack (1.4.5)
63
- rack-cache (1.2)
64
- rack (>= 0.4)
65
- rack-protection (1.5.0)
66
- rack
67
- rack-ssl (1.3.3)
68
- rack
69
- rack-test (0.6.2)
70
- rack (>= 1.0)
71
- rails (3.2.13)
72
- actionmailer (= 3.2.13)
73
- actionpack (= 3.2.13)
74
- activerecord (= 3.2.13)
75
- activeresource (= 3.2.13)
76
- activesupport (= 3.2.13)
77
- bundler (~> 1.0)
78
- railties (= 3.2.13)
79
- railties (3.2.13)
80
- actionpack (= 3.2.13)
81
- activesupport (= 3.2.13)
82
- rack-ssl (~> 1.3.2)
83
- rake (>= 0.8.7)
84
- rdoc (~> 3.4)
85
- thor (>= 0.14.6, < 2.0)
86
- rake (10.0.4)
87
- rdoc (3.12.2)
88
- json (~> 1.4)
89
- rspec (2.13.0)
90
- rspec-core (~> 2.13.0)
91
- rspec-expectations (~> 2.13.0)
92
- rspec-mocks (~> 2.13.0)
93
- rspec-core (2.13.1)
94
- rspec-expectations (2.13.0)
95
- diff-lcs (>= 1.1.3, < 2.0)
96
- rspec-mocks (2.13.1)
97
- sinatra (1.3.6)
98
- rack (~> 1.4)
99
- rack-protection (~> 1.3)
100
- tilt (~> 1.3, >= 1.3.3)
101
- sinatra-contrib (1.3.2)
102
- backports (>= 2.0)
103
- eventmachine
104
- rack-protection
105
- rack-test
106
- sinatra (~> 1.3.0)
107
- tilt (~> 1.3)
108
- sprockets (2.2.2)
109
- hike (~> 1.2)
110
- multi_json (~> 1.0)
111
- rack (~> 1.0)
112
- tilt (~> 1.1, != 1.3.0)
113
- thor (0.18.1)
114
- tilt (1.3.7)
115
- treetop (1.4.12)
116
- polyglot
117
- polyglot (>= 0.3.1)
118
- tzinfo (0.3.37)
119
-
120
- PLATFORMS
121
- ruby
122
-
123
- DEPENDENCIES
124
- bson_ext
125
- mongo
126
- mongo_request_logger!
127
- moped
128
- rails (~> 3.2.10)
129
- rspec
130
- sinatra (~> 1.3.2)
@@ -1,61 +0,0 @@
1
- PATH
2
- remote: /Users/john/src/mongo_request_logger
3
- specs:
4
- mongo_request_logger (0.2.7)
5
- activesupport (~> 3.0)
6
- sinatra (>= 1.3.2)
7
- sinatra-contrib
8
-
9
- GEM
10
- remote: https://rubygems.org/
11
- specs:
12
- activesupport (3.2.13)
13
- i18n (= 0.6.1)
14
- multi_json (~> 1.0)
15
- backports (3.3.3)
16
- bson (1.8.5)
17
- bson_ext (1.8.5)
18
- bson (~> 1.8.5)
19
- diff-lcs (1.2.3)
20
- eventmachine (1.0.3)
21
- i18n (0.6.1)
22
- mongo (1.8.5)
23
- bson (~> 1.8.5)
24
- moped (1.4.5)
25
- multi_json (1.7.7)
26
- rack (1.5.2)
27
- rack-protection (1.5.0)
28
- rack
29
- rack-test (0.6.2)
30
- rack (>= 1.0)
31
- rspec (2.13.0)
32
- rspec-core (~> 2.13.0)
33
- rspec-expectations (~> 2.13.0)
34
- rspec-mocks (~> 2.13.0)
35
- rspec-core (2.13.1)
36
- rspec-expectations (2.13.0)
37
- diff-lcs (>= 1.1.3, < 2.0)
38
- rspec-mocks (2.13.1)
39
- sinatra (1.4.2)
40
- rack (~> 1.5, >= 1.5.2)
41
- rack-protection (~> 1.4)
42
- tilt (~> 1.3, >= 1.3.4)
43
- sinatra-contrib (1.4.0)
44
- backports (>= 2.0)
45
- eventmachine
46
- rack-protection
47
- rack-test
48
- sinatra (~> 1.4.2)
49
- tilt (~> 1.3)
50
- tilt (1.3.7)
51
-
52
- PLATFORMS
53
- ruby
54
-
55
- DEPENDENCIES
56
- bson_ext
57
- mongo
58
- mongo_request_logger!
59
- moped
60
- rspec
61
- sinatra (~> 1.4.0)