mongo_request_logger 0.4.0 → 0.5.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: 77639396cad58e5a076a1bfb8faf2814140c79a3
4
- data.tar.gz: 04ef4b8af39a09990dd78a6d88648cae5f881902
3
+ metadata.gz: a1a7c2d660f9091c18bab904f5c7adf9c7481dfd
4
+ data.tar.gz: 756f66c113e76c516016dc068de35e6c81bf3f0e
5
5
  SHA512:
6
- metadata.gz: 27db8433c868c7cf729afefb4418ca3dd90905c735e608cff97946c3f23098b7cd5ff158dcd77ce2dfa93a1c9a8d47f7f342d9ac60ec2ebca2a18fbe9ec58805
7
- data.tar.gz: c60ac9125d39a8c98a43974f9ede24093904c90c3ec9a4c049114154d96c2d11ac3d3ced27f10af0f900648b41bb1c92394054196c2b10b6f521d34f8f435658
6
+ metadata.gz: 7248658d11b915dd320dc65104c20b238b4f64f1f496925f9e9ed7abe2aeaba2a2efc504d82380a98289e4d44cd6209ee7b3899730a4526d967167719b7257ee
7
+ data.tar.gz: a66e533c523a2c78ba07f2faac8442fa7e6e82940f6597d8d56da426fa1b8246148c8cc7ac28a4c95bb7342fc2ea28b399c844004cf57171f8be2cc9ce1eee3e
@@ -0,0 +1 @@
1
+ 2.2.0
@@ -1,18 +1,21 @@
1
1
  language: ruby
2
2
  script: "bundle exec rspec"
3
+ branches:
4
+ except:
5
+ - /^v[0-9]/
3
6
  env:
4
7
  - CI=true
5
8
  rvm:
6
- - 1.9.3
7
9
  - 2.0.0
8
10
  - 2.1.1
11
+ - 2.2.0
9
12
 
10
13
  gemfile:
11
- - gemfiles/sinatra1.3.gemfile
14
+ - gemfiles/rails4.2.gemfile
12
15
  - gemfiles/sinatra1.4.gemfile
13
16
 
14
17
  services:
15
18
  - mongodb
16
19
  notifications:
17
20
  recipients:
18
- - ralf@embarkmobile.com
21
+ - ralf@journeyapps.com
@@ -1,3 +1,9 @@
1
+ ## 0.5.0
2
+
3
+ *Backwards incompatible!*
4
+
5
+ * Support Rails 4, Mongoid 4 and Moped 2. Older versions of these, including ActiveSupport, is not supported anymore.
6
+
1
7
  ## 0.4.0
2
8
 
3
9
  *Backwards incompatible!*
@@ -28,7 +34,7 @@
28
34
 
29
35
  ## 0.2.4
30
36
 
31
- * Improved hanlding of logger when not configured for an environment.
37
+ * Improved handling of logger when not configured for an environment.
32
38
 
33
39
  ## 0.2.3
34
40
 
data/Gemfile CHANGED
@@ -1,7 +1,7 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- gem 'moped', '~> 1.5'
4
- gem 'mongoid', '~> 3.0'
3
+ gem 'moped', '~> 2.0'
4
+ gem 'mongoid', '~> 4.0'
5
5
  gem 'rspec'
6
6
  gem 'sinatra', '~> 1.4.0'
7
7
 
data/README.md CHANGED
@@ -6,10 +6,10 @@ Log requests in a structured format to MongoDB.
6
6
 
7
7
  Add this line to your application's Gemfile:
8
8
 
9
- gem 'mongoid', '~> 3.0'
9
+ gem 'mongoid', '~> 4.0'
10
10
  gem 'mongo_request_logger'
11
11
 
12
- ## Usage with Rails
12
+ ## Usage with Rails 4
13
13
 
14
14
  Add a `logger` session to your Mongoid config, `config/mongoid.yml`. An additional option
15
15
  `capsize` must be provided.
@@ -1,10 +1,11 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- gem 'moped', '~> 1.5'
4
- gem 'mongoid', '~> 3.0'
3
+ gem 'moped', '~> 2.0'
4
+ gem 'mongoid', '~> 4.0'
5
5
  gem 'rspec'
6
- gem 'rails', '~> 3.2.10'
6
+ gem 'rails', '~> 4.2'
7
7
  gem 'sinatra', '~> 1.3.2'
8
+ gem 'actionpack-xml_parser'
8
9
 
9
10
  # Specify your gem's dependencies in mongo_request_logger.gemspec
10
11
  gemspec path: '../'
@@ -1,7 +1,7 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- gem 'moped', '~> 1.5'
4
- gem 'mongoid', '~> 3.0'
3
+ gem 'moped', '~> 2.0'
4
+ gem 'mongoid', '~> 4.0'
5
5
  gem 'rspec'
6
6
  gem 'sinatra', '~> 1.4.0'
7
7
 
@@ -1,4 +1,4 @@
1
- require 'mongo_request_logger/ext/buffered_logger'
1
+ require 'mongo_request_logger/ext/activesupport_logger'
2
2
  require 'mongo_request_logger/ext/logger'
3
3
  require 'mongo_request_logger/logger'
4
4
  require 'mongo_request_logger/version'
@@ -1,6 +1,8 @@
1
1
  # Adapted from https://github.com/le0pard/mongodb_logger/
2
+ require 'moped'
2
3
 
3
4
  require 'mongo_request_logger/adapters/base'
5
+ require 'mongo_request_logger/ext/moped_session'
4
6
 
5
7
  module MongoRequestLogger
6
8
  module Adapters
@@ -34,7 +36,7 @@ module MongoRequestLogger
34
36
  end
35
37
 
36
38
  def insert_log_record(record)
37
- record[:_id] = ::Moped::BSON::ObjectId.new
39
+ record[:_id] = ::BSON::ObjectId.new
38
40
  @connection.with(safe: false)[collection_name].insert(record)
39
41
  end
40
42
 
@@ -51,7 +53,7 @@ module MongoRequestLogger
51
53
  end
52
54
 
53
55
  def find_by_id(id)
54
- @collection.find("_id" => ::Moped::BSON::ObjectId.from_string(id)).first
56
+ @collection.find("_id" => ::BSON::ObjectId.from_string(id)).first
55
57
  end
56
58
 
57
59
  def clear!
@@ -0,0 +1,4 @@
1
+ require 'active_support/logger'
2
+ require 'mongo_request_logger/logger_extensions'
3
+
4
+ ActiveSupport::Logger.send(:include, MongoRequestLogger::LoggerExtensions)
@@ -0,0 +1,5 @@
1
+ require 'moped'
2
+ require 'moped/session'
3
+
4
+ # We use an additional :capsize option in the config.
5
+ Moped::Session.send(:option, :capsize).allow(Optionable.any(Integer))
@@ -1,8 +1,8 @@
1
- require 'active_support/buffered_logger'
2
- require 'mongo_request_logger/ext/buffered_logger'
1
+ require 'active_support/logger'
2
+ require 'mongo_request_logger/ext/activesupport_logger'
3
3
 
4
4
  module MongoRequestLogger
5
- class Logger < ActiveSupport::BufferedLogger
5
+ class Logger < ActiveSupport::Logger
6
6
  attr_reader :adapter
7
7
 
8
8
  def initialize(adapter, file, level=DEBUG)
@@ -89,7 +89,19 @@ module MongoRequestLogger
89
89
  end
90
90
 
91
91
  def add(severity, message = nil, progname = nil, &block)
92
+ severity ||= UNKNOWN
93
+
92
94
  unless level > severity
95
+ if message.nil?
96
+ if block_given?
97
+ message = yield
98
+ else
99
+ message = progname
100
+ end
101
+ end
102
+
103
+ raise "FOO" if message.nil?
104
+
93
105
  time = Time.now.strftime "%H:%M:%S.%L"
94
106
  prefix = "#{time} [#{level_to_s(severity)}] "
95
107
  #if ActiveRecord::Base.colorize_logging
@@ -97,7 +109,7 @@ module MongoRequestLogger
97
109
  # @mongo_record[:messages] << prefix + message.gsub(/(\e(\[([\d;]*[mz]?))?)?/, '').strip rescue nil
98
110
  #else
99
111
  @mongo_record[:messages] ||= []
100
- @mongo_record[:messages] << prefix + message
112
+ @mongo_record[:messages] << "#{prefix}#{message}"
101
113
  #end
102
114
  end
103
115
 
@@ -37,7 +37,7 @@ module MongoRequestLogger
37
37
  return @app.call(env)
38
38
  end
39
39
  end
40
- # TODO: filter parameters
40
+
41
41
  # KLUDGE: this will cause parameter parsing to happen twice: once here, once later on in Rails.
42
42
  # Or maybe it's automatically cached in env?
43
43
  logger.log_request do
@@ -1,4 +1,4 @@
1
- if (defined? Rails) && Rails.version =~ /^3\./
1
+ if defined? Rails
2
2
  require 'mongo_request_logger'
3
3
 
4
4
  require 'rails'
@@ -1,3 +1,3 @@
1
1
  module MongoRequestLogger
2
- VERSION = '0.4.0'
2
+ VERSION = '0.5.0'
3
3
  end
@@ -20,5 +20,5 @@ Gem::Specification.new do |gem|
20
20
 
21
21
  gem.add_dependency 'sinatra', '>= 1.3.2'
22
22
  gem.add_dependency 'sinatra-contrib'
23
- gem.add_dependency 'activesupport', '~> 3.0'
23
+ gem.add_dependency 'activesupport', '~> 4.0'
24
24
  end
@@ -1,6 +1,7 @@
1
1
  require 'rails'
2
2
  require 'action_controller/railtie'
3
-
3
+ require 'action_dispatch/xml_params_parser'
4
+ require 'mongo_request_logger/viewer'
4
5
 
5
6
  class Dummy < Rails::Application
6
7
  config.root = File.dirname(__FILE__)
@@ -8,6 +9,9 @@ class Dummy < Rails::Application
8
9
  # Rails needs these keys, but they don't really have to be secret for our tests
9
10
  config.session_store :cookie_store, key: '****************************************'
10
11
  config.secret_token = '****************************************'
12
+ config.secret_key_base = '****************************************'
13
+
14
+ config.middleware.insert_after ActionDispatch::ParamsParser, ActionDispatch::XmlParamsParser
11
15
 
12
16
  # Our routes
13
17
  routes.draw do
@@ -33,5 +37,9 @@ end
33
37
 
34
38
  # Not sure how to make Rails automatically run the railtie with a dummy app, so we do it manually.
35
39
  # In a proper Rails app we don't need this.
40
+
41
+ config_file = Rails.root.join("config", "mongoid.yml")
42
+ ::Mongoid.load!(config_file)
43
+
36
44
  require 'mongo_request_logger/railtie'
37
45
  MongoRequestLogger::Railtie.setup(Rails.application)
@@ -0,0 +1,13 @@
1
+ test:
2
+ sessions:
3
+ default:
4
+ database: request_logger_test_dummy
5
+ hosts:
6
+ - localhost:27017
7
+ logger:
8
+ database: request_logger_test
9
+ hosts:
10
+ - localhost:27017
11
+ options:
12
+ capsize: 10 # megabytes
13
+
@@ -78,11 +78,11 @@ begin
78
78
  it "should handle broken post JSON content" do
79
79
  data = "This is not JSON"
80
80
  post '/', {}, {input: data, "CONTENT_TYPE" => 'application/json'}
81
- last_response.status.should == 500
81
+ last_response.status.should == 400
82
82
 
83
83
  result = adapter.query({}).first
84
84
  result['path'].should == '/'
85
- result['response'].should == 500 # Why is it 500?
85
+ result['response'].should == 500 # FIXME: We don't detect the response code correctly.
86
86
  result['request_method'].should == 'POST'
87
87
  result['content_type'].should == 'application/json'
88
88
  result['content_length'].should == data.length
@@ -92,11 +92,11 @@ begin
92
92
  it "should handle broken post XML content" do
93
93
  data = "This is not XML"
94
94
  post '/', {}, {input: data, "CONTENT_TYPE" => 'application/xml'}
95
- last_response.status.should == 500
95
+ last_response.status.should == 400
96
96
 
97
97
  result = adapter.query({}).first
98
98
  result['path'].should == '/'
99
- result['response'].should == 500 # Why is it 500?
99
+ result['response'].should == 500 # FIXME: We don't detect the response code correctly.
100
100
  result['request_method'].should == 'POST'
101
101
  result['content_type'].should == 'application/xml'
102
102
  result['content_length'].should == data.length
@@ -1,13 +1,6 @@
1
1
  require 'rspec'
2
2
  require 'rack/test'
3
3
 
4
- if ENV['COVERAGE']
5
- require 'simplecov'
6
- SimpleCov.start do
7
- add_filter '/spec/'
8
- end
9
- end
10
-
11
4
  begin
12
5
  require 'rails'
13
6
  rescue LoadError
@@ -20,13 +13,9 @@ if defined? Rails
20
13
  RAILS_ROOT = File.join(File.dirname(__FILE__), 'spec/dummy')
21
14
  end
22
15
 
23
- # Require all files, so they show up in coverage
24
- Dir['lib/**/*.rb'].each do |file|
25
- path = /lib\/(.*)\.rb/.match(file)[1]
26
- require path
27
- end
28
-
29
-
30
16
  RSpec.configure do |conf|
31
17
  conf.include Rack::Test::Methods
18
+
19
+ # We're still using the old syntax for now
20
+ conf.expect_with(:rspec) { |c| c.syntax = :should }
32
21
  end
metadata CHANGED
@@ -1,57 +1,57 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongo_request_logger
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.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: 2014-03-18 00:00:00.000000000 Z
11
+ date: 2015-06-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sinatra
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: 1.3.2
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '>='
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: 1.3.2
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: sinatra-contrib
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
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
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: activesupport
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ~>
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '3.0'
47
+ version: '4.0'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ~>
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '3.0'
54
+ version: '4.0'
55
55
  description: Request logger for Rack apps
56
56
  email:
57
57
  - info@embarkmobile.com
@@ -59,8 +59,9 @@ executables: []
59
59
  extensions: []
60
60
  extra_rdoc_files: []
61
61
  files:
62
- - .gitignore
63
- - .travis.yml
62
+ - ".gitignore"
63
+ - ".ruby-version"
64
+ - ".travis.yml"
64
65
  - CHANGELOG.md
65
66
  - Gemfile
66
67
  - LICENSE.txt
@@ -371,14 +372,15 @@ files:
371
372
  - angular/test/unit/filtersSpec.js
372
373
  - angular/test/unit/servicesSpec.js
373
374
  - config.ru
374
- - gemfiles/sinatra1.3.gemfile
375
+ - gemfiles/rails4.2.gemfile
375
376
  - gemfiles/sinatra1.4.gemfile
376
377
  - lib/mongo_request_logger.rb
377
378
  - lib/mongo_request_logger/adapters/base.rb
378
379
  - lib/mongo_request_logger/adapters/moped.rb
379
380
  - lib/mongo_request_logger/backtrace_cleaner.rb
380
- - lib/mongo_request_logger/ext/buffered_logger.rb
381
+ - lib/mongo_request_logger/ext/activesupport_logger.rb
381
382
  - lib/mongo_request_logger/ext/logger.rb
383
+ - lib/mongo_request_logger/ext/moped_session.rb
382
384
  - lib/mongo_request_logger/log_message.rb
383
385
  - lib/mongo_request_logger/logged_job.rb
384
386
  - lib/mongo_request_logger/logger.rb
@@ -390,7 +392,7 @@ files:
390
392
  - lib/mongo_request_logger/viewer.rb
391
393
  - mongo_request_logger.gemspec
392
394
  - spec/dummy/application.rb
393
- - spec/dummy/config/logger.yml
395
+ - spec/dummy/config/mongoid.yml
394
396
  - spec/dummy/log/.gitkeep
395
397
  - spec/moped_logger_spec.rb
396
398
  - spec/query_spec.rb
@@ -412,23 +414,23 @@ require_paths:
412
414
  - lib
413
415
  required_ruby_version: !ruby/object:Gem::Requirement
414
416
  requirements:
415
- - - '>='
417
+ - - ">="
416
418
  - !ruby/object:Gem::Version
417
419
  version: '0'
418
420
  required_rubygems_version: !ruby/object:Gem::Requirement
419
421
  requirements:
420
- - - '>='
422
+ - - ">="
421
423
  - !ruby/object:Gem::Version
422
424
  version: '0'
423
425
  requirements: []
424
426
  rubyforge_project:
425
- rubygems_version: 2.0.3
427
+ rubygems_version: 2.4.5
426
428
  signing_key:
427
429
  specification_version: 4
428
430
  summary: Structured logger and log viewer for Rack (including Rails) requests
429
431
  test_files:
430
432
  - spec/dummy/application.rb
431
- - spec/dummy/config/logger.yml
433
+ - spec/dummy/config/mongoid.yml
432
434
  - spec/dummy/log/.gitkeep
433
435
  - spec/moped_logger_spec.rb
434
436
  - spec/query_spec.rb
@@ -1,6 +0,0 @@
1
- require 'active_support/buffered_logger'
2
- require 'mongo_request_logger/logger_extensions'
3
-
4
- class ActiveSupport::BufferedLogger
5
- include MongoRequestLogger::LoggerExtensions
6
- end
@@ -1,5 +0,0 @@
1
- test:
2
- host: localhost
3
- database: request_logger_test
4
- capsize: 10 # megabytes
5
-