time_bandits 0.9.2 → 0.10.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: 60323e9d2981d428d2b3a1053944f22ee61eb006
4
- data.tar.gz: 468a458c3bcb15cce429e79fe434698d7e689a14
3
+ metadata.gz: acc7cbb26b11fb1994866f77893b803ed7b22d01
4
+ data.tar.gz: e7d1dbf959382fc54dd1bf86c9ba75690db8ac70
5
5
  SHA512:
6
- metadata.gz: f7afb9cabf033fc56b8edf45585f08e0257bc3f7955c3ab63267ac38585727a7d633f86895afad3bfd9f2d676e456dc3bedd996d1214b2a04a3d8c2af52b34da
7
- data.tar.gz: 57f397b925e412816cb7d0b03f49e7208ce16213ba9a64fdf3fe9c422575749dba6b7735a3cd8145e06dfcbf4f0c826e14c854aa615bc29b3c406dd880caf942
6
+ metadata.gz: 50fa739258c7236ee9d0f66a7e0347164d99402d76d48b88e6836deb2b6bd0790071ef849aeae11ee1a499836e29fe9062f46a69a9986a4022259624ac292650
7
+ data.tar.gz: 65210bbea9658c6f5daadddeec201ed3c16a8d903d79d6d4e30fc488ae161d66dff42fee60774ac3e59b634d565d4f563dbbd47593a46abd53711205b07de7b5
data/Appraisals CHANGED
@@ -1,6 +1,7 @@
1
1
  [
2
2
  "4.1.15",
3
3
  "4.2.6",
4
+ "5.0.0",
4
5
  ].each do |rails_version|
5
6
  appraise "activesupport-#{rails_version}" do
6
7
  gem "activesupport", rails_version
data/README.rdoc CHANGED
@@ -84,8 +84,33 @@ In order for the test to run you need a running memcached, redis-server and mysq
84
84
 
85
85
  == Release Notes
86
86
 
87
- master
87
+ version 0.10.0
88
+ -- support rails 5
89
+
90
+ version 0.9.2
91
+ -- sequel gem changes broke sequel time consumer
92
+
93
+ version 0.9.1
94
+ -- make sure redis times consumer logs keys in ASCII
95
+
96
+ version 0.9.0
97
+ -- added beetle time consumer
98
+
99
+ version 0.8.1
100
+ - bugfix
101
+
102
+ version 0.8.0
103
+ - support retrieving current runtime including not yet consumed time
104
+
105
+ version 0.7.4
88
106
  - use appraisal for testing against multiple rails versions
107
+ - bugfix for actions without render
108
+
109
+ version 0.7.3
110
+ - bugfix dalli consumer for rails 4.2
111
+
112
+ version 0.7.2
113
+ - support ruby 2.2.0
89
114
 
90
115
  version 0.7.1
91
116
  - support measuring sequel gem
@@ -0,0 +1,28 @@
1
+ version: '2'
2
+
3
+ services:
4
+ mysql:
5
+ container_name: mysql
6
+ image: mysql:5.5
7
+ ports:
8
+ - "3601:3306"
9
+ environment:
10
+ MYSQL_ALLOW_EMPTY_PASSWORD: 1
11
+
12
+ memcached:
13
+ container_name: memcached
14
+ image: memcached:1.4.27
15
+ ports:
16
+ - "11211:11211"
17
+
18
+ redis:
19
+ container_name: redis
20
+ image: redis:3.2.0
21
+ ports:
22
+ - "6379:6379"
23
+
24
+ rabbitmq:
25
+ container_name: rabbitmq
26
+ image: rabbitmq:3.6.2
27
+ ports:
28
+ - "5672:5672"
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ../
3
3
  specs:
4
- time_bandits (0.9.1)
4
+ time_bandits (0.9.2)
5
5
  activesupport (>= 2.3.2)
6
6
  thread_variables
7
7
 
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ../
3
3
  specs:
4
- time_bandits (0.9.1)
4
+ time_bandits (0.9.2)
5
5
  activesupport (>= 2.3.2)
6
6
  thread_variables
7
7
 
@@ -0,0 +1,8 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "http://rubygems.org"
4
+
5
+ gem "activesupport", "5.0.0"
6
+ gem "activerecord", "5.0.0"
7
+
8
+ gemspec :path => "../"
@@ -0,0 +1,93 @@
1
+ PATH
2
+ remote: ../
3
+ specs:
4
+ time_bandits (0.9.2)
5
+ activesupport (>= 2.3.2)
6
+ thread_variables
7
+
8
+ GEM
9
+ remote: http://rubygems.org/
10
+ specs:
11
+ activemodel (5.0.0)
12
+ activesupport (= 5.0.0)
13
+ activerecord (5.0.0)
14
+ activemodel (= 5.0.0)
15
+ activesupport (= 5.0.0)
16
+ arel (~> 7.0)
17
+ activesupport (5.0.0)
18
+ concurrent-ruby (~> 1.0, >= 1.0.2)
19
+ i18n (~> 0.7)
20
+ minitest (~> 5.1)
21
+ tzinfo (~> 1.1)
22
+ amq-client (1.0.2)
23
+ amq-protocol (>= 1.2.0)
24
+ eventmachine
25
+ amq-protocol (1.6.0)
26
+ amqp (1.0.2)
27
+ amq-client (~> 1.0.2)
28
+ amq-protocol (>= 1.3.0)
29
+ eventmachine
30
+ ansi (1.5.0)
31
+ appraisal (2.1.0)
32
+ bundler
33
+ rake
34
+ thor (>= 0.14.0)
35
+ arel (7.0.0)
36
+ beetle (0.4.8)
37
+ activesupport (>= 2.3.4)
38
+ amq-client (= 1.0.2)
39
+ amq-protocol (= 1.6.0)
40
+ amqp (= 1.0.2)
41
+ bunny (~> 0.7.10)
42
+ daemons (>= 1.1.9)
43
+ eventmachine_httpserver (>= 0.2.1)
44
+ hiredis (>= 0.4.5, < 0.6)
45
+ redis (>= 2.2.2, < 3.2)
46
+ uuid4r (>= 0.1.2)
47
+ bunny (0.7.10)
48
+ byebug (9.0.5)
49
+ concurrent-ruby (1.0.2)
50
+ daemons (1.2.3)
51
+ dalli (2.7.6)
52
+ eventmachine (1.2.0.1)
53
+ eventmachine_httpserver (0.2.1)
54
+ hiredis (0.5.2)
55
+ i18n (0.7.0)
56
+ memcached (1.8.0)
57
+ metaclass (0.0.4)
58
+ minitest (5.9.0)
59
+ mocha (1.1.0)
60
+ metaclass (~> 0.0.1)
61
+ mysql2 (0.4.4)
62
+ rake (10.5.0)
63
+ redis (3.1.0)
64
+ sequel (4.36.0)
65
+ thor (0.19.1)
66
+ thread_safe (0.3.5)
67
+ thread_variables (0.2.0)
68
+ tzinfo (1.2.2)
69
+ thread_safe (~> 0.1)
70
+ uuid4r (0.2.0)
71
+
72
+ PLATFORMS
73
+ ruby
74
+
75
+ DEPENDENCIES
76
+ activerecord (= 5.0.0)
77
+ activesupport (= 5.0.0)
78
+ ansi
79
+ appraisal
80
+ beetle (>= 0.4.6)
81
+ byebug
82
+ dalli
83
+ memcached (~> 1.8.0)
84
+ minitest (~> 5.5)
85
+ mocha
86
+ mysql2
87
+ rake (~> 10.5.0)
88
+ redis
89
+ sequel
90
+ time_bandits!
91
+
92
+ BUNDLED WITH
93
+ 1.12.5
@@ -5,7 +5,7 @@ module ActionController #:nodoc:
5
5
  module Instrumentation
6
6
 
7
7
  # patch to ensure that the completed line is always written to the log.
8
- # this is not necessary anymore with rails 4.
8
+ # this is not necessary anymore with Rails 4 and higher.
9
9
  def process_action(action, *args)
10
10
  raw_payload = get_raw_payload
11
11
  ActiveSupport::Notifications.instrument("start_processing.action_controller", raw_payload.dup)
@@ -24,9 +24,10 @@ module ActionController #:nodoc:
24
24
  end
25
25
  raise exception if exception
26
26
  result
27
- end unless Rails::VERSION::STRING =~ /\A4\./
27
+ end unless Rails::VERSION::STRING >= "4.0"
28
28
 
29
29
  # patch to ensure that render times are always recorded in the log.
30
+ # this is not necessary anymore with Rails 3 and up.
30
31
  def render(*args)
31
32
  render_output = nil
32
33
  exception = nil
@@ -40,7 +41,7 @@ module ActionController #:nodoc:
40
41
  end
41
42
  raise exception if exception
42
43
  render_output
43
- end
44
+ end unless Rails::VERSION::STRING >= "3.0"
44
45
 
45
46
  def cleanup_view_runtime #:nodoc:
46
47
  consumed_before_rendering = TimeBandits.consumed
@@ -73,7 +74,7 @@ module ActionController #:nodoc:
73
74
  :path => (request.fullpath rescue "unknown")
74
75
  }
75
76
  end
76
- elsif Rails::VERSION::STRING !~ /\A4\.[012]/
77
+ elsif Rails::VERSION::STRING < "3"
77
78
  raise "time_bandits ActionController monkey patch is not compatible with your Rails version"
78
79
  end
79
80
 
@@ -101,7 +102,7 @@ module ActionController #:nodoc:
101
102
  [ event.duration, additions, payload[:view_runtime], "#{payload[:controller]}##{payload[:action]}" ]
102
103
  )
103
104
 
104
- # this an ugly hack to encure completed lines show up in the test logs
105
+ # this is an ugly hack to ensure completed lines show up in the test logs
105
106
  # TODO: move this code to some other place
106
107
  return unless Rails.env.test? && Rails::VERSION::STRING >= "3.2"
107
108
 
@@ -4,7 +4,7 @@
4
4
  # it needs to be adapted to each new rails version
5
5
 
6
6
  raise "time_bandits ActiveRecord monkey patch is not compatible with your rails version" unless
7
- Rails::VERSION::STRING =~ /^(3\.[012]|4\.[012])/
7
+ Rails::VERSION::STRING =~ /^(3\.[012]|4\.[012])|5.0/
8
8
 
9
9
  require "active_record/log_subscriber"
10
10
 
@@ -48,6 +48,8 @@ module ActiveRecord
48
48
  # temporarily switch to protected mode and change it back later to
49
49
  # public.
50
50
 
51
+ # Note that render_bind was added for Rails 4.0, and the implementation
52
+ # has changed since then, so we are careful to only redefine it if necessary.
51
53
  unless instance_methods.include?(:render_bind)
52
54
  protected
53
55
  def render_bind(column, value)
@@ -76,29 +78,51 @@ module ActiveRecord
76
78
 
77
79
  return if IGNORE_PAYLOAD_NAMES.include?(payload[:name])
78
80
 
79
- name = '%s (%.1fms)' % [payload[:name], event.duration]
80
- sql = payload[:sql].squeeze(' ')
81
- binds = nil
81
+ log_sql_statement(payload, event)
82
+ end
83
+ public :sql
84
+ public
82
85
 
83
- unless (payload[:binds] || []).empty?
84
- binds = " " + payload[:binds].map { |col,v|
85
- render_bind(col, v)
86
- }.inspect
87
- end
86
+ private
87
+ if Rails::VERSION::STRING < "5.0"
88
+ def log_sql_statement(payload, event)
89
+ name = '%s (%.1fms)' % [payload[:name], event.duration]
90
+ sql = payload[:sql].squeeze(' ')
91
+ binds = nil
88
92
 
89
- if odd?
90
- name = color(name, CYAN, true)
91
- sql = color(sql, nil, true)
92
- else
93
- name = color(name, MAGENTA, true)
93
+ unless (payload[:binds] || []).empty?
94
+ binds = " " + payload[:binds].map { |attr| render_bind(attr) }.inspect
95
+ end
96
+
97
+ name = colorize_payload_name(name, payload[:name])
98
+ sql = color(sql, sql_color(sql), true)
99
+
100
+ debug " #{name} #{sql}#{binds}"
94
101
  end
102
+ else
103
+ def log_sql_statement(payload, event)
104
+ name = "#{payload[:name]} (#{event.duration.round(1)}ms)"
105
+ sql = payload[:sql]
106
+ binds = nil
107
+
108
+ unless (payload[:binds] || []).empty?
109
+ binds = " " + payload[:binds].map { |col,v| render_bind(col, v) }.inspect
110
+ end
95
111
 
96
- debug " #{name} #{sql}#{binds}"
112
+ if odd?
113
+ name = color(name, CYAN, true)
114
+ sql = color(sql, nil, true)
115
+ else
116
+ name = color(name, MAGENTA, true)
117
+ end
118
+
119
+ debug " #{name} #{sql}#{binds}"
120
+ end
97
121
  end
98
- public :sql
99
- public
100
122
  end
101
123
 
124
+ require "active_record/railties/controller_runtime"
125
+
102
126
  module Railties
103
127
  module ControllerRuntime
104
128
  def cleanup_view_runtime
@@ -1,6 +1,9 @@
1
1
  require "active_support/cache"
2
2
 
3
- # rails 4 builtin mem_cache_store broke hit reporting for fetch
3
+ # Rails 4 builtin mem_cache_store broke hit reporting for fetch.
4
+ # This has been fixed in Rails 5.
5
+ # The dalli time consumer makes sure to require this file only for Rails 4.
6
+
4
7
  class ActiveSupport::Cache::Store
5
8
  private
6
9
  # only called by fetch
@@ -11,7 +11,7 @@ module TimeBandits
11
11
  class Railtie < Rails::Railtie
12
12
 
13
13
  initializer "time_bandits" do |app|
14
- app.config.middleware.swap("Rails::Rack::Logger", "TimeBandits::Rack::Logger")
14
+ app.config.middleware.swap(Rails::Rack::Logger, TimeBandits::Rack::Logger)
15
15
 
16
16
  ActiveSupport.on_load(:action_controller) do
17
17
  require 'time_bandits/monkey_patches/action_controller'
@@ -19,14 +19,14 @@ module TimeBandits
19
19
 
20
20
  # make sure TimeBandits.reset is called in test environment as middlewares are not executed
21
21
  if Rails.env.test?
22
- require 'action_controller/test_case'
23
- module ActionController::TestCase::Behavior
24
- def process_with_time_bandits(*args)
22
+ module TestWithTimeBanditsReset
23
+ def process(*args)
25
24
  TimeBandits.reset
26
- process_without_time_bandits(*args)
25
+ super
27
26
  end
28
- alias_method_chain :process, :time_bandits
29
27
  end
28
+ require 'action_controller/test_case'
29
+ ActionController::TestCase::Behavior.prepend TestWithTimeBanditsReset
30
30
  end
31
31
  end
32
32
 
@@ -1,4 +1,4 @@
1
- if Rails::VERSION::STRING >= "4.0"
1
+ if Rails::VERSION::STRING =~ /\A4.[0123]/
2
2
  require "time_bandits/monkey_patches/active_support_cache_store"
3
3
  end
4
4
 
@@ -1,3 +1,3 @@
1
1
  module TimeBandits
2
- VERSION = "0.9.2"
2
+ VERSION = "0.10.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: time_bandits
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.2
4
+ version: 0.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stefan Kaes
@@ -233,10 +233,13 @@ files:
233
233
  - README.rdoc
234
234
  - Rakefile
235
235
  - TODO
236
+ - docker-compose.yml
236
237
  - gemfiles/activesupport_4.1.15.gemfile
237
238
  - gemfiles/activesupport_4.1.15.gemfile.lock
238
239
  - gemfiles/activesupport_4.2.6.gemfile
239
240
  - gemfiles/activesupport_4.2.6.gemfile.lock
241
+ - gemfiles/activesupport_5.0.0.gemfile
242
+ - gemfiles/activesupport_5.0.0.gemfile.lock
240
243
  - lib/time_bandits.rb
241
244
  - lib/time_bandits/monkey_patches/action_controller.rb
242
245
  - lib/time_bandits/monkey_patches/active_record.rb