salestation 3.4.0 → 3.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: d9174def3fd040598bc0d97a1e0aeac15005df69
4
- data.tar.gz: d248d26c1d3f5ac3241da5263408a4324c1d3a9f
3
+ metadata.gz: 4fd4756c2f6c74060b5a8fc8d7c86c8b4e4b78ec
4
+ data.tar.gz: 74aae6794e107f5d25f6bbffd92f43e7d940b469
5
5
  SHA512:
6
- metadata.gz: a25ca2cf30a5f8e49f265779cf4a87010e06884de56cf99429bcc656633abe281c0bc4be30e03af96d946158a47eaff1ea5a0a1e4d6d3fdff0a9c33532c8e5d5
7
- data.tar.gz: 74cf0cc00b2c8f925a45651a6f9a8fdb69adacc76e893d97e9f2e91e96bcdb20fb87bcda498746404ef85984d5e8522dbbed278a05975b5eac0d9243025b922d
6
+ metadata.gz: 500d7c1894f02b898ff7b6c7cea53b3fc84699440b1d031bdca0c3f9d12dc2e463c3360d768386e53ed31d18e44e6cb7d04af73d6238173e8b7c52740c3c305c
7
+ data.tar.gz: 2372c5e2e508edc5949b00476e5e4dc93ffd48d4996d686584b49b943792c83f3b5f384854f5e986896235cb76b220d6931d1c79ebe9252fee08ed794199c125
data/README.md CHANGED
@@ -153,6 +153,15 @@ class Webapp < Sinatra::Base
153
153
  end
154
154
  ```
155
155
 
156
+ You can configure per-request tags by defining `salestation.statsd.tags` in sinatra `env`:
157
+
158
+ ```ruby
159
+ def my_handler(env)
160
+ env['salestation.statsd.tags'] = ['foo', 'bar']
161
+ # ...
162
+ end
163
+ ```
164
+
156
165
  ## Development
157
166
 
158
167
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
@@ -3,6 +3,9 @@
3
3
  module Salestation
4
4
  class Web < Module
5
5
  class StatsdMiddleware
6
+ EXTRA_TAGS_ENV_KEY = 'salestation.statsd.tags'
7
+
8
+ DURATION_PRECISION = 6
6
9
 
7
10
  def initialize(app, statsd, metric:)
8
11
  @app = app
@@ -11,7 +14,7 @@ module Salestation
11
14
  end
12
15
 
13
16
  def call(env)
14
- start = Time.now
17
+ start = system_monotonic_time
15
18
 
16
19
  status, header, body = @app.call env
17
20
 
@@ -23,14 +26,26 @@ module Salestation
23
26
  'unknown-route'
24
27
  end
25
28
 
26
- @statsd.timing(@metric, (Time.now - start) * 1000, tags: [
29
+ tags = [
27
30
  "path:#{ path }",
28
31
  "method:#{ method }",
29
32
  "status:#{ status }"
30
- ])
33
+ ] + env.fetch(EXTRA_TAGS_ENV_KEY, [])
34
+
35
+ @statsd.timing(@metric, duration(from: start), tags: tags)
31
36
 
32
37
  [status, header, body]
33
38
  end
39
+
40
+ private
41
+
42
+ def duration(from:)
43
+ (system_monotonic_time - from).round(DURATION_PRECISION)
44
+ end
45
+
46
+ def system_monotonic_time
47
+ Process.clock_gettime(Process::CLOCK_MONOTONIC)
48
+ end
34
49
  end
35
50
  end
36
51
  end
data/salestation.gemspec CHANGED
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = "salestation"
7
- spec.version = "3.4.0"
7
+ spec.version = "3.5.0"
8
8
  spec.authors = ["Glia TechMovers"]
9
9
  spec.email = ["techmovers@glia.com"]
10
10
 
@@ -20,7 +20,7 @@ Gem::Specification.new do |spec|
20
20
  spec.require_paths = ["lib"]
21
21
 
22
22
  spec.add_development_dependency "bundler", "~> 1.13"
23
- spec.add_development_dependency "rake", "~> 10.0"
23
+ spec.add_development_dependency "rake", "~> 13.0"
24
24
  spec.add_development_dependency "rspec", "~> 3.0"
25
25
  spec.add_development_dependency "pry", "~> 0.10.4"
26
26
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: salestation
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.4.0
4
+ version: 3.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Glia TechMovers
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-03-03 00:00:00.000000000 Z
11
+ date: 2020-03-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '10.0'
33
+ version: '13.0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '10.0'
40
+ version: '13.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement