timber 2.4.0 → 2.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4473feee6c4bed1f4a2d42843d6216ee9dc65610
4
- data.tar.gz: 9dd9a9da2061ca1c3f01969ec341a08f58afb776
3
+ metadata.gz: eb90a5dcdaf6811bfa761744ebcb1df521aca6e3
4
+ data.tar.gz: 92784b6843f7acc7649aa1ff62434c907d7e71ae
5
5
  SHA512:
6
- metadata.gz: bd0d89058be50f3fea6a55c957abbfb62c883114718e0b744a8833d44a09e2ce2ebb02df55d2d8e2b482e3d3cbfed41d982197dab49fe2ef7f5f1b8e8309929f
7
- data.tar.gz: 4b0d17af89a7a89b2ad7933d2be3161798c5430b220dc512e177cf6c2d22285725b61be0ff164d0d9f5be9970e6073e7a8387fd430c2c7284f597e4658b6ffc5
6
+ metadata.gz: de2fba5e95d5e0ddf11bb753cd7be7986f9ed836c63793583d076280f30312113f40b48f32718654b57394515afea77867d692a625e7cab2a8f6ee19e88c89e8
7
+ data.tar.gz: e62cd797becc6aa3bbc8ae37b6b44a42ef5d1d27bc8b0ea7c9510078511b04b5e8cebd12c6a8f6c3bbcd4fc2eba4bf553b4ef4df3923558cae91af2fa71fa7a0
@@ -7,6 +7,25 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [2.5.0] - 2017-10-27
11
+
12
+ ### Changed
13
+
14
+ - Remove social promotions during the installation process
15
+ - The default log device for development has been changed to a file (log/development.log)
16
+ to follow Rails defaults.
17
+
18
+ ### Fixed
19
+
20
+ - Adds an override for ActiveSupport::Buffered logger. This is a legacy class that was dropped
21
+ in Rails >= 4. It lacked #formatter accessor methods, which was a bug that was never resolved.
22
+
23
+ ### Added
24
+
25
+ - Capture `content_length` for both HTTP request and HTTP response events. This field is
26
+ available in the log's metadata. The response event now includes the content length in the
27
+ actual log message. The request message remains unchanged.
28
+
10
29
  ## [2.4.0] - 2017-10-23
11
30
 
12
31
  ### Added
@@ -78,7 +97,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
78
97
  instead of applying back pressure.
79
98
 
80
99
 
81
- [Unreleased]: https://github.com/timberio/timber-ruby/compare/v2.4.0...HEAD
100
+ [Unreleased]: https://github.com/timberio/timber-ruby/compare/v2.5.0...HEAD
101
+ [2.5.0]: https://github.com/timberio/timber-ruby/compare/v2.4.0...v2.5.0
82
102
  [2.4.0]: https://github.com/timberio/timber-ruby/compare/v2.3.4...v2.4.0
83
103
  [2.3.4]: https://github.com/timberio/timber-ruby/compare/v2.3.3...v2.3.4
84
104
  [2.3.3]: https://github.com/timberio/timber-ruby/compare/v2.3.2...v2.3.3
data/README.md CHANGED
@@ -280,7 +280,7 @@ Logging features designed to help developers get more done:
280
280
 
281
281
  1. [**Powerful searching.** - Find what you need faster.](https://timber.io/docs/app/console/searching)
282
282
  2. [**Live tail users.** - Easily solve customer issues.](https://timber.io/docs/app/console/tail-a-user)
283
- 3. [**Viw logs per HTTP request.** - See the full story without the noise.](https://timber.io/docs/app/console/trace-http-requests)
283
+ 3. [**View logs per HTTP request.** - See the full story without the noise.](https://timber.io/docs/app/console/trace-http-requests)
284
284
  4. [**Inspect HTTP request parameters.** - Quickly reproduce issues.](https://timber.io/docs/app/console/inspect-http-requests)
285
285
  5. [**Threshold based alerting.** - Know when things break.](https://timber.io/docs/app/alerts)
286
286
  6. ...and more! Checkout our [the Timber application docs](https://timber.io/docs/app)
@@ -159,9 +159,9 @@ module Timber
159
159
  else
160
160
  res
161
161
  end
162
- rescue OpenSSL::SSL::SSLError => e
163
- if http.ssl_version != :SSLv23
164
- http.ssl_version = :SSLv23
162
+ rescue OpenSSL::SSL::SSLError => _e
163
+ if http.ssl_version != :TLSv1_2
164
+ http.ssl_version = :TLSv1_2
165
165
  issue!(req)
166
166
  end
167
167
  end
@@ -58,7 +58,10 @@ module Timber
58
58
  config = Timber::Config.instance
59
59
 
60
60
  #{insert_hook}
61
- # For a full list of configuration options and their explanations see:
61
+ # For common configuration options see:
62
+ # https://timber.io/docs/languages/ruby/configuration
63
+ #
64
+ # For a full list of configuration options see:
62
65
  # http://www.rubydoc.info/github/timberio/timber-ruby/Timber/Config
63
66
 
64
67
  CONTENT
@@ -72,12 +72,17 @@ module Timber
72
72
 
73
73
  logger_code = <<-CODE
74
74
  # Install the Timber.io logger
75
- send_logs_to_timber = true # <---- Set to false to stop sending development logs to Timber.io.
76
- # But do not remove the logger code below! The log_device should
77
- # be set to STDOUT if you want to disable sending logs.
78
-
79
- log_device = send_logs_to_timber ? Timber::LogDevices::HTTP.new(#{api_key_code}) : STDOUT
80
- logger = Timber::Logger.new(log_device)
75
+ # ----------------------------
76
+ # Remove the `http_device` to stop sending development logs to Timber.
77
+ # Be sure to keep the `file_device` or replace it with `STDOUT`.
78
+ http_device = Timber::LogDevices::HTTP.new(#{api_key_code})
79
+ file_device = File.open("\#{Rails.root}/log/development.log", "a")
80
+ file_device.binmode
81
+ log_devices = [http_device, file_device]
82
+
83
+ # Do not modify below this line. It's important to keep the `Timber::Logger`
84
+ # because it provides an API for logging structured data and capturing context.
85
+ logger = Timber::Logger.new(*log_devices)
81
86
  logger.level = config.log_level
82
87
  config.logger = #{config_set_logger_code}
83
88
  CODE
@@ -140,7 +145,10 @@ CODE
140
145
 
141
146
  def install_nil(environment_file_path)
142
147
  logger_code = <<-CODE
143
- # Install the Timber.io logger, but do not send logs.
148
+ # Install the Timber.io logger
149
+ # ----------------------------
150
+ # `nil` is passed to disable logging. It's important to keep the `Timber::Logger`
151
+ # because it provides an API for logging structured data and capturing context.
144
152
  logger = Timber::Logger.new(nil)
145
153
  logger.level = config.log_level
146
154
  config.logger = #{config_set_logger_code}
@@ -32,7 +32,6 @@ module Timber
32
32
  confirm_log_delivery
33
33
  api.event(:success)
34
34
  collect_feedback
35
- free_data
36
35
  wrap_up(app)
37
36
  end
38
37
 
@@ -111,13 +110,6 @@ module Timber
111
110
  io.puts "Thank you! We take feedback seriously and will work to improve this."
112
111
  end
113
112
  end
114
-
115
- def free_data
116
- io.puts ""
117
- io.puts IO::Messages.separator
118
- io.puts ""
119
- io.puts IO::Messages.free_data
120
- end
121
113
  end
122
114
  end
123
115
  end
@@ -86,16 +86,6 @@ MESSAGE
86
86
  message
87
87
  end
88
88
 
89
- def free_data
90
- message = <<-MESSAGE
91
- Get free data:
92
-
93
- * Get ✨ 250mb✨ for starring our repo: #{IO::ANSI.colorize(REPO_URL, :blue)}
94
- * Get ✨ 250mb✨ for tweeting your experience to #{IO::ANSI.colorize(TWITTER_HANDLE, :blue)}
95
- MESSAGE
96
- message.rstrip
97
- end
98
-
99
89
  def header
100
90
  message = <<-MESSAGE
101
91
  🌲 Timber.io Ruby Installer - Great Ruby Logging Made *Easy*
@@ -9,11 +9,12 @@ module Timber
9
9
  # @note This event should be installed automatically through integrations,
10
10
  # such as the {Integrations::ActionController::LogSubscriber} integration.
11
11
  class HTTPRequest < Timber::Event
12
- attr_reader :body, :headers, :host, :method, :path, :port, :query_string, :request_id,
13
- :scheme, :service_name
12
+ attr_reader :body, :content_length, :headers, :host, :method, :path, :port, :query_string,
13
+ :request_id, :scheme, :service_name
14
14
 
15
15
  def initialize(attributes)
16
16
  @body = attributes[:body] && Util::HTTPEvent.normalize_body(attributes[:body])
17
+ @content_length = attributes[:content_length]
17
18
  @headers = Util::HTTPEvent.normalize_headers(attributes[:headers])
18
19
  @host = attributes[:host]
19
20
  @method = Util::HTTPEvent.normalize_method(attributes[:method]) || raise(ArgumentError.new(":method is required"))
@@ -25,8 +26,9 @@ module Timber
25
26
  end
26
27
 
27
28
  def to_hash
28
- {body: body, headers: headers, host: host, method: method, path: path, port: port,
29
- query_string: query_string, request_id: request_id, scheme: scheme}
29
+ {body: body, content_length: content_length, headers: headers, host: host, method: method,
30
+ path: path, port: port, query_string: query_string, request_id: request_id,
31
+ scheme: scheme}
30
32
  end
31
33
  alias to_h to_hash
32
34
 
@@ -9,10 +9,11 @@ module Timber
9
9
  # @note This event should be installed automatically through integrations,
10
10
  # such as the {Integrations::ActionController::LogSubscriber} integration.
11
11
  class HTTPResponse < Timber::Event
12
- attr_reader :body, :headers, :http_context, :request_id, :service_name, :status, :time_ms
12
+ attr_reader :body, :content_length, :headers, :http_context, :request_id, :service_name, :status, :time_ms
13
13
 
14
14
  def initialize(attributes)
15
15
  @body = attributes[:body] && Util::HTTPEvent.normalize_body(attributes[:body])
16
+ @content_length = attributes[:content_length]
16
17
  @headers = Util::HTTPEvent.normalize_headers(attributes[:headers])
17
18
  @http_context = attributes[:http_context]
18
19
  @request_id = attributes[:request_id]
@@ -22,7 +23,8 @@ module Timber
22
23
  end
23
24
 
24
25
  def to_hash
25
- {body: body, headers: headers, request_id: request_id, status: status, time_ms: time_ms}
26
+ {body: body, content_length: content_length, headers: headers, request_id: request_id,
27
+ status: status, time_ms: time_ms}
26
28
  end
27
29
  alias to_h to_hash
28
30
 
@@ -34,10 +36,22 @@ module Timber
34
36
  # Returns the human readable log message for this event.
35
37
  def message
36
38
  if http_context
37
- "#{http_context[:method]} #{http_context[:path]} sent #{status} #{status_description} " \
38
- "in #{time_ms}ms"
39
+ message = "#{http_context[:method]} #{http_context[:path]} completed with " \
40
+ "#{status} #{status_description} "
41
+
42
+ if content_length
43
+ message += ", #{content_length} bytes, "
44
+ end
45
+
46
+ message + "in #{time_ms}ms"
39
47
  else
40
- "Completed #{status} #{status_description} in #{time_ms}ms"
48
+ message = "Completed #{status} #{status_description} "
49
+
50
+ if content_length
51
+ message += ", #{content_length} bytes, "
52
+ end
53
+
54
+ message + "in #{time_ms}ms"
41
55
  end
42
56
  end
43
57
 
@@ -106,6 +106,8 @@ module Timber
106
106
  end
107
107
  end
108
108
 
109
+ CONTENT_LENGTH_KEY = 'Content-Length'.freeze
110
+
109
111
  def call(env)
110
112
  request = Util::Request.new(env)
111
113
 
@@ -126,9 +128,11 @@ module Timber
126
128
  Config.instance.logger.info do
127
129
  http_context_key = Contexts::HTTP.keyspace
128
130
  http_context = CurrentContext.fetch(http_context_key)
131
+ content_length = headers[CONTENT_LENGTH_KEY]
129
132
  time_ms = (Time.now - start) * 1000.0
130
133
 
131
134
  Events::HTTPResponse.new(
135
+ content_length: content_length,
132
136
  headers: headers,
133
137
  http_context: http_context,
134
138
  request_id: request.request_id,
@@ -147,6 +151,7 @@ module Timber
147
151
 
148
152
  Events::HTTPRequest.new(
149
153
  body: event_body,
154
+ content_length: request.content_length,
150
155
  headers: request.headers,
151
156
  host: request.host,
152
157
  method: request.request_method,
@@ -161,11 +166,13 @@ module Timber
161
166
  status, headers, body = @app.call(env)
162
167
 
163
168
  Config.instance.logger.info do
164
- time_ms = (Time.now - start) * 1000.0
165
169
  event_body = capture_response_body? ? body : nil
170
+ content_length = headers[CONTENT_LENGTH_KEY]
171
+ time_ms = (Time.now - start) * 1000.0
166
172
 
167
173
  Events::HTTPResponse.new(
168
174
  body: event_body,
175
+ content_length: content_length,
169
176
  headers: headers,
170
177
  request_id: request.request_id,
171
178
  status: status,
@@ -1,6 +1,7 @@
1
1
  # The order is relevant
2
2
  require "timber/overrides/active_support_3_tagged_logging"
3
3
  require "timber/overrides/active_support_tagged_logging"
4
+ require "timber/overrides/active_support_buffered_logger"
4
5
  require "timber/overrides/lograge"
5
6
  require "timber/overrides/rails_stdout_logging"
6
7
 
@@ -1,3 +1,8 @@
1
+ # Please note, this patch is merely an upgrade, backporting improved tagged logging code
2
+ # from newer versions of Rails:
3
+ # https://github.com/rails/rails/blob/5-1-stable/activesupport/lib/active_support/tagged_logging.rb
4
+ # The behavior of tagged logging will not change in any way.
5
+ #
1
6
  # This patch is specifically for Rails 3. The legacy approach to wrapping the logger in
2
7
  # ActiveSupport::TaggedLogging is rather poor, hence the reason it was changed entirely
3
8
  # for Rails 4 and 5. The problem is that ActiveSupport::TaggedLogging is a wrapping
@@ -79,9 +84,12 @@ begin
79
84
  end
80
85
 
81
86
  def self.new(logger)
82
- # Ensure we set a default formatter so we aren't extending nil!
83
- logger.formatter ||= SimpleFormatter.new
84
- logger.formatter.extend Formatter
87
+ if logger.respond_to?(:formatter=) && logger.respond_to?(:formatter)
88
+ # Ensure we set a default formatter so we aren't extending nil!
89
+ logger.formatter ||= SimpleFormatter.new
90
+ logger.formatter.extend Formatter
91
+ end
92
+
85
93
  logger.extend(self)
86
94
  end
87
95
 
@@ -0,0 +1,22 @@
1
+ # This adds a #formatter and #formatter= method to the legacy ActiveSupport::BufferedLogger
2
+ # class. This bug was never resolved due to it being phased out past Rails >= 4.
3
+
4
+ begin
5
+ require "active_support/buffered_logger"
6
+
7
+ class ActiveSupport::BufferedLogger
8
+ def formatter
9
+ if @log.respond_to?(:formatter)
10
+ @log.formatter
11
+ end
12
+ end
13
+
14
+ def formatter=(value)
15
+ if @log.respond_to?(:formatter=)
16
+ @log.formatter = value
17
+ end
18
+ end
19
+ end
20
+
21
+ rescue Exception
22
+ end
@@ -1,3 +1,3 @@
1
1
  module Timber
2
- VERSION = "2.4.0"
2
+ VERSION = "2.5.0"
3
3
  end
@@ -3,6 +3,20 @@ require "spec_helper"
3
3
  # ActiveSupport::TaggedLogging is not defined in <= 3.1
4
4
  if defined?(::ActiveSupport::TaggedLogging)
5
5
  describe ActiveSupport::TaggedLogging, :rails_23 => true do
6
+ describe "#new" do
7
+ let(:io) { StringIO.new }
8
+
9
+ it "should instantiate for Timber::Logger object" do
10
+ ActiveSupport::TaggedLogging.new(Timber::Logger.new(io))
11
+ end
12
+
13
+ if defined?(ActiveSupport::BufferedLogger)
14
+ it "should instantiate for a ActiveSupport::BufferedLogger object" do
15
+ ActiveSupport::TaggedLogging.new(ActiveSupport::BufferedLogger.new(io))
16
+ end
17
+ end
18
+ end
19
+
6
20
  describe "#info" do
7
21
  let(:time) { Time.utc(2016, 9, 1, 12, 0, 0) }
8
22
  let(:io) { StringIO.new }
@@ -30,6 +30,7 @@ if defined?(::Rails)
30
30
  application = ::Rails.application
31
31
  env = application.respond_to?(:env_config) ? application.env_config.clone : application.env_defaults.clone
32
32
  env["rack.request.cookie_hash"] = {}.with_indifferent_access
33
+ env["CONTENT_LENGTH"] = 100
33
34
  env["REMOTE_ADDR"] = "123.456.789.10"
34
35
  env["HTTP_X_REQUEST_ID"] = "unique-request-id-1234"
35
36
  env["action_dispatch.request_id"] = env["HTTP_X_REQUEST_ID"]
@@ -5,7 +5,7 @@ describe Timber::CLI::ConfigFile, :rails_23 => true do
5
5
  let(:file_helper) { @file_helper = Timber::CLI::FileHelper.new(api) }
6
6
  let(:path) { "config/initializers/timber.rb" }
7
7
  let(:config_file) { described_class.new(path, file_helper) }
8
- let(:initial_contents) { "# Timber.io Ruby Configuration - Simple Structured Logging\n#\n# ^ ^ ^ ^ ___I_ ^ ^ ^ ^ ^ ^ ^\n# /|\\/|\\/|\\ /|\\ /\\-_--\\ /|\\/|\\ /|\\/|\\/|\\ /|\\/|\\\n# /|\\/|\\/|\\ /|\\ / \\_-__\\ /|\\/|\\ /|\\/|\\/|\\ /|\\/|\\\n# /|\\/|\\/|\\ /|\\ |[]| [] | /|\\/|\\ /|\\/|\\/|\\ /|\\/|\\\n# -------------------------------------------------------------------\n# Website: https://timber.io\n# Documentation: https://timber.io/docs\n# Support: support@timber.io\n# -------------------------------------------------------------------\n\nconfig = Timber::Config.instance\n\n# Add additional configuration here.\n# For a full list of configuration options and their explanations see:\n# http://www.rubydoc.info/github/timberio/timber-ruby/Timber/Config\n\n" }
8
+ let(:initial_contents) { "# Timber.io Ruby Configuration - Simple Structured Logging\n#\n# ^ ^ ^ ^ ___I_ ^ ^ ^ ^ ^ ^ ^\n# /|\\/|\\/|\\ /|\\ /\\-_--\\ /|\\/|\\ /|\\/|\\/|\\ /|\\/|\\\n# /|\\/|\\/|\\ /|\\ / \\_-__\\ /|\\/|\\ /|\\/|\\/|\\ /|\\/|\\\n# /|\\/|\\/|\\ /|\\ |[]| [] | /|\\/|\\ /|\\/|\\/|\\ /|\\/|\\\n# -------------------------------------------------------------------\n# Website: https://timber.io\n# Documentation: https://timber.io/docs\n# Support: support@timber.io\n# -------------------------------------------------------------------\n\nconfig = Timber::Config.instance\n\n# Add additional configuration here.\n# For common configuration options see:\n# https://timber.io/docs/languages/ruby/configuration\n#\n# For a full list of configuration options see:\n# http://www.rubydoc.info/github/timberio/timber-ruby/Timber/Config\n\n" }
9
9
  let(:contents_hook) { "# Add additional configuration here." }
10
10
 
11
11
  describe ".create!" do
@@ -17,7 +17,7 @@ describe Timber::CLI::Installers::ConfigFile, :rails_23 => true do
17
17
  let(:output) { StringIO.new }
18
18
  let(:io) { Timber::CLI::IO.new(io_out: output, io_in: input) }
19
19
  let(:installer) { described_class.new(io, api) }
20
- let(:initial_config_contents) { "# Timber.io Ruby Configuration - Simple Structured Logging\n#\n# ^ ^ ^ ^ ___I_ ^ ^ ^ ^ ^ ^ ^\n# /|\\/|\\/|\\ /|\\ /\\-_--\\ /|\\/|\\ /|\\/|\\/|\\ /|\\/|\\\n# /|\\/|\\/|\\ /|\\ / \\_-__\\ /|\\/|\\ /|\\/|\\/|\\ /|\\/|\\\n# /|\\/|\\/|\\ /|\\ |[]| [] | /|\\/|\\ /|\\/|\\/|\\ /|\\/|\\\n# -------------------------------------------------------------------\n# Website: https://timber.io\n# Documentation: https://timber.io/docs\n# Support: support@timber.io\n# -------------------------------------------------------------------\n\nconfig = Timber::Config.instance\n\n# Add additional configuration here.\n# For a full list of configuration options and their explanations see:\n# http://www.rubydoc.info/github/timberio/timber-ruby/Timber/Config\n\n" }
20
+ let(:initial_config_contents) { "# Timber.io Ruby Configuration - Simple Structured Logging\n#\n# ^ ^ ^ ^ ___I_ ^ ^ ^ ^ ^ ^ ^\n# /|\\/|\\/|\\ /|\\ /\\-_--\\ /|\\/|\\ /|\\/|\\/|\\ /|\\/|\\\n# /|\\/|\\/|\\ /|\\ / \\_-__\\ /|\\/|\\ /|\\/|\\/|\\ /|\\/|\\\n# /|\\/|\\/|\\ /|\\ |[]| [] | /|\\/|\\ /|\\/|\\/|\\ /|\\/|\\\n# -------------------------------------------------------------------\n# Website: https://timber.io\n# Documentation: https://timber.io/docs\n# Support: support@timber.io\n# -------------------------------------------------------------------\n\nconfig = Timber::Config.instance\n\n# Add additional configuration here.\n# For common configuration options see:\n# https://timber.io/docs/languages/ruby/configuration\n#\n# For a full list of configuration options see:\n# http://www.rubydoc.info/github/timberio/timber-ruby/Timber/Config\n\n" }
21
21
 
22
22
  describe ".run" do
23
23
  it "should run properly" do
@@ -95,12 +95,17 @@ describe Timber::CLI::Installers::Rails, :rails_23 => true do
95
95
 
96
96
  expected_code = <<-CODE
97
97
  # Install the Timber.io logger
98
- send_logs_to_timber = true # <---- Set to false to stop sending development logs to Timber.io.
99
- # But do not remove the logger code below! The log_device should
100
- # be set to STDOUT if you want to disable sending logs.
101
-
102
- log_device = send_logs_to_timber ? Timber::LogDevices::HTTP.new('#{app.api_key}') : STDOUT
103
- logger = Timber::Logger.new(log_device)
98
+ # ----------------------------
99
+ # Remove the `http_device` to stop sending development logs to Timber.
100
+ # Be sure to keep the `file_device` or replace it with `STDOUT`.
101
+ http_device = Timber::LogDevices::HTTP.new('#{app.api_key}')
102
+ file_device = File.open("\#{Rails.root}/log/development.log", "a")
103
+ file_device.binmode
104
+ log_devices = [http_device, file_device]
105
+
106
+ # Do not modify below this line. It's important to keep the `Timber::Logger`
107
+ # because it provides an API for logging structured data and capturing context.
108
+ logger = Timber::Logger.new(*log_devices)
104
109
  logger.level = config.log_level
105
110
  config.logger = #{logger_code}
106
111
  CODE
@@ -314,7 +319,10 @@ CODE
314
319
  env_file_path = "config/environments/development.rb"
315
320
 
316
321
  expected_code = <<-CODE
317
- # Install the Timber.io logger, but do not send logs.
322
+ # Install the Timber.io logger
323
+ # ----------------------------
324
+ # `nil` is passed to disable logging. It's important to keep the `Timber::Logger`
325
+ # because it provides an API for logging structured data and capturing context.
318
326
  logger = Timber::Logger.new(nil)
319
327
  logger.level = config.log_level
320
328
  config.logger = #{logger_code}
@@ -30,7 +30,6 @@ describe Timber::CLI::Installers::Root, :rails_23 => true do
30
30
  expect(installer).to receive(:wrap_up).with(app).exactly(1).times
31
31
  expect(api).to receive(:event).with(:success).exactly(1).times
32
32
  expect(installer).to receive(:collect_feedback).exactly(1).times
33
- expect(installer).to receive(:free_data).exactly(1).times
34
33
 
35
34
  installer.run(app)
36
35
  end
@@ -88,7 +88,7 @@ if defined?(::Rack)
88
88
  expect(lines.length).to eq(2)
89
89
 
90
90
  expect(lines[0]).to start_with("Processing by RackHttpController#index as HTML @metadata ")
91
- expect(lines[1]).to start_with("GET /rack_http sent 200 OK in 0.0ms @metadata ")
91
+ expect(lines[1]).to start_with("GET /rack_http completed with 200 OK in 0.0ms @metadata ")
92
92
  end
93
93
  end
94
94
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: timber
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.0
4
+ version: 2.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Timber Technologies, Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-10-24 00:00:00.000000000 Z
11
+ date: 2017-10-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: msgpack
@@ -235,6 +235,7 @@ files:
235
235
  - lib/timber/logger.rb
236
236
  - lib/timber/overrides.rb
237
237
  - lib/timber/overrides/active_support_3_tagged_logging.rb
238
+ - lib/timber/overrides/active_support_buffered_logger.rb
238
239
  - lib/timber/overrides/active_support_tagged_logging.rb
239
240
  - lib/timber/overrides/lograge.rb
240
241
  - lib/timber/overrides/rails_stdout_logging.rb