trashed 3.0.0 → 3.0.1

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
  !binary "U0hBMQ==":
3
- metadata.gz: 8a76c1137b987b5c2e00ce832d90a32ed952d72b
4
- data.tar.gz: 0530e17d53650ef1da7787f8f658b2eb93ecbaf0
3
+ metadata.gz: fc92cf23f413c7dbc13b7e974f0ff667050296dd
4
+ data.tar.gz: 83a9dacf210062f9aec4d1632095989ec20be08b
5
5
  SHA512:
6
- metadata.gz: 1e39ad89bdd197f0fffaf9367778d32c48fe2bfa55e70fc11c648837979eadccc94014d5bc0a237ed97b68bc7901460bad8d166caf915a84880638d47b28e1a3
7
- data.tar.gz: b1d891fe71584f900ba80adcd3d0a4a73472b1b3a46173341a10c678fa546eb21c314ed4581c8574000ffb621cfff5c096181f5594a12d9ac9436b4799eb5ed1
6
+ metadata.gz: a13685415df07c31c6b3a95afc25ac2b22c18325b8b799c9b3eb4fca7a4bf805bc0c5bf4acb5f787f4a401214b3c79e05f5d5464deb33936cc5488fbe5934d2f
7
+ data.tar.gz: ad71d73f6ded5cd28c032b54b45ccec80eccbd2cf129c50582740b0d187331fa8af13db2384e26312b4ba8721f37ee11a098c6fa886280e2b03d7e48e3d71ea3
data/lib/trashed/rack.rb CHANGED
@@ -7,14 +7,7 @@ module Trashed
7
7
  def initialize(app, reporter, options = {})
8
8
  @reporter = reporter
9
9
  @meters = Array(options.fetch(:meters, [ResourceUsage]))
10
- @logger, @statsd, @sample_rate = options.values_at(:logger, :statsd_instance, :sample_rate)
11
- @sample_rate ||= 1.0
12
-
13
- @request_namespaces = options[:statsd_request_namespaces]
14
- @sampler_namespaces = options[:statsd_sampler_namespaces]
15
-
16
- # Wrap the app up in the meters.
17
- @app = build_instrumented_app(app, @meters)
10
+ @app = build_sampled_instrumented_app(app, @meters)
18
11
  end
19
12
 
20
13
  def call(env)
@@ -26,6 +19,20 @@ module Trashed
26
19
  end
27
20
 
28
21
  private
22
+ def build_sampled_instrumented_app(app, meters)
23
+ build_sampled_app app, build_instrumented_app(app, meters)
24
+ end
25
+
26
+ def build_sampled_app(app, instrumented)
27
+ lambda do |env|
28
+ if @reporter.sample? env
29
+ instrumented.call env
30
+ else
31
+ app.call env
32
+ end
33
+ end
34
+ end
35
+
29
36
  def build_instrumented_app(app, meters)
30
37
  meters.inject app do |wrapped, meter|
31
38
  lambda do |env|
@@ -15,17 +15,24 @@ module Trashed
15
15
  @gauge_dimensions = ->(env) { DEFAULT_DIMENSIONS }
16
16
  end
17
17
 
18
+ # Override in subclasses. Be sure to `super && ...` if you want to rely
19
+ # on the sample_rate.
20
+ def sample?(env = nil)
21
+ random_sample?
22
+ end
23
+
24
+ def random_sample?
25
+ @sample_rate == 1 or rand < @sample_rate
26
+ end
27
+
18
28
  def report(env)
19
29
  report_logger env if @logger
20
30
  report_statsd env if @statsd
21
31
  end
22
32
 
23
33
  def report_logger(env)
24
- elapsed = env[Trashed::Rack::TIMINGS].assoc(:'Time.wall')
25
- gc_runs = env[Trashed::Rack::TIMINGS].assoc(:'GC.count')
26
- if elapsed && gc_runs
27
- @logger.info "Rack handled in %dms (GC runs: %d)" % [elapsed[1], gc_runs[1]]
28
- end
34
+ timings = env[Trashed::Rack::TIMINGS]
35
+ @logger.info "Rack handled in %dms (GC runs: %d)" % timings.values_at(:'Time.wall', :'GC.count')
29
36
  end
30
37
 
31
38
  def report_statsd(env)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trashed
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0
4
+ version: 3.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeremy Kemper