metriks-middleware 2.0.0 → 2.1.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 +15 -0
- data/Rakefile +1 -154
- data/lib/metriks/middleware.rb +1 -11
- data/metriks-middleware.gemspec +27 -64
- data/script/package +7 -0
- data/script/release +15 -0
- data/test/async_app_test.rb +0 -15
- data/test/sync_app_test.rb +0 -15
- metadata +13 -27
- data/example/Gemfile +0 -6
- data/example/Gemfile.lock +0 -30
- data/example/Procfile +0 -1
- data/example/config.ru +0 -40
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
NDQ0YWZjMmFlYjM0ZjU4ZTBmMTVhMmNkNGMzYTk3MmY2MDMxZWJiMg==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
YmEwMWZkNjhjYjIxOWUyYzE3ZTdhZGMwZDQzNjFjOTY5NjZlZTUzYw==
|
7
|
+
!binary "U0hBNTEy":
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
ZjE1NTEyZGEyNjMxMDk4MGJmZmZhZWFmZTU2YzcwMzNlZTc2ZDUyYzdiODhh
|
10
|
+
NTJlZmFmMWFmNTEyYzlhNmQyMjZiNzEyZTM4ODBkYjlmMmJiYjMwZjRkM2Mx
|
11
|
+
NGU2NTE1MmNhOGEzMWJmMGU2YzVjMDU5NGY3N2E0ZDRjNDMwMDM=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
NDMwMWFmZWY4NmNiZmY5OTYyN2FkZGRjMmE4MzZmNjU2YTVmZjIyM2Q4ZDA5
|
14
|
+
NjgwMWZhNDZmMTBlODkzOGFlMmViNGI5MjFmMGUxODhkZGYyZWZmMWQ1YWY0
|
15
|
+
NjViZGZiYzFkMDkxNDg4NTU1ZDRjMzg5NzQ1MjM0YmU4YzExN2Q=
|
data/Rakefile
CHANGED
@@ -1,54 +1,3 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'rake'
|
3
|
-
require 'date'
|
4
|
-
|
5
|
-
#############################################################################
|
6
|
-
#
|
7
|
-
# Helper functions
|
8
|
-
#
|
9
|
-
#############################################################################
|
10
|
-
|
11
|
-
def name
|
12
|
-
@name ||= Dir['*.gemspec'].first.split('.').first
|
13
|
-
end
|
14
|
-
|
15
|
-
def lib_path
|
16
|
-
"lib/#{ name.gsub('-', '/') }.rb"
|
17
|
-
end
|
18
|
-
|
19
|
-
def version
|
20
|
-
line = File.read(lib_path)[/^\s*VERSION\s*=\s*.*/]
|
21
|
-
line.match(/.*ERSION\s*=\s*['"](.*)['"]/)[1]
|
22
|
-
end
|
23
|
-
|
24
|
-
def date
|
25
|
-
Date.today.to_s
|
26
|
-
end
|
27
|
-
|
28
|
-
def rubyforge_project
|
29
|
-
name
|
30
|
-
end
|
31
|
-
|
32
|
-
def gemspec_file
|
33
|
-
"#{name}.gemspec"
|
34
|
-
end
|
35
|
-
|
36
|
-
def gem_file
|
37
|
-
"#{name}-#{version}.gem"
|
38
|
-
end
|
39
|
-
|
40
|
-
def replace_header(head, header_name)
|
41
|
-
head.sub!(/(\.#{header_name}\s*= ').*'/) { "#{$1}#{send(header_name)}'"}
|
42
|
-
end
|
43
|
-
|
44
|
-
#############################################################################
|
45
|
-
#
|
46
|
-
# Standard tasks
|
47
|
-
#
|
48
|
-
#############################################################################
|
49
|
-
|
50
|
-
task :default => :test
|
51
|
-
|
52
1
|
require 'rake/testtask'
|
53
2
|
Rake::TestTask.new(:test) do |test|
|
54
3
|
test.libs << 'lib' << 'test'
|
@@ -56,106 +5,4 @@ Rake::TestTask.new(:test) do |test|
|
|
56
5
|
test.verbose = true
|
57
6
|
end
|
58
7
|
|
59
|
-
|
60
|
-
task :coverage do
|
61
|
-
require 'rcov'
|
62
|
-
sh "rm -fr coverage"
|
63
|
-
sh "rcov test/test_*.rb"
|
64
|
-
sh "open coverage/index.html"
|
65
|
-
end
|
66
|
-
|
67
|
-
require 'rdoc/task'
|
68
|
-
Rake::RDocTask.new do |rdoc|
|
69
|
-
rdoc.rdoc_dir = 'rdoc'
|
70
|
-
rdoc.title = "#{name} #{version}"
|
71
|
-
rdoc.rdoc_files.include('README*')
|
72
|
-
rdoc.rdoc_files.include('lib/**/*.rb')
|
73
|
-
end
|
74
|
-
|
75
|
-
desc "Open an irb session preloaded with this library"
|
76
|
-
task :console do
|
77
|
-
p "irb -rubygems -r ./#{lib_path}"
|
78
|
-
sh "irb -rubygems -r ./#{lib_path}"
|
79
|
-
end
|
80
|
-
|
81
|
-
#############################################################################
|
82
|
-
#
|
83
|
-
# Custom tasks (add your own tasks here)
|
84
|
-
#
|
85
|
-
#############################################################################
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
#############################################################################
|
90
|
-
#
|
91
|
-
# Packaging tasks
|
92
|
-
#
|
93
|
-
#############################################################################
|
94
|
-
|
95
|
-
desc "Create tag v#{version} and build and push #{gem_file} to Rubygems"
|
96
|
-
task :release => :build do
|
97
|
-
unless `git branch` =~ /^\* master$/
|
98
|
-
puts "You must be on the master branch to release!"
|
99
|
-
exit!
|
100
|
-
end
|
101
|
-
sh "git commit --allow-empty -a -m 'Release #{version}'"
|
102
|
-
sh "git tag v#{version}"
|
103
|
-
sh "git push origin master"
|
104
|
-
sh "git push origin v#{version}"
|
105
|
-
sh "gem push pkg/#{name}-#{version}.gem"
|
106
|
-
end
|
107
|
-
|
108
|
-
desc "Build #{gem_file} into the pkg directory"
|
109
|
-
task :build => [:gemspec, :update_bundle] do
|
110
|
-
sh "mkdir -p pkg"
|
111
|
-
sh "gem build #{gemspec_file}"
|
112
|
-
sh "mv #{gem_file} pkg"
|
113
|
-
end
|
114
|
-
|
115
|
-
desc "Generate #{gemspec_file}"
|
116
|
-
task :gemspec => :validate do
|
117
|
-
# read spec file and split out manifest section
|
118
|
-
spec = File.read(gemspec_file)
|
119
|
-
head, manifest, tail = spec.split(" # = MANIFEST =\n")
|
120
|
-
|
121
|
-
# replace name version and date
|
122
|
-
replace_header(head, :name)
|
123
|
-
replace_header(head, :version)
|
124
|
-
replace_header(head, :date)
|
125
|
-
#comment this out if your rubyforge_project has a different name
|
126
|
-
replace_header(head, :rubyforge_project)
|
127
|
-
|
128
|
-
# determine file list from git ls-files
|
129
|
-
files = `git ls-files`.
|
130
|
-
split("\n").
|
131
|
-
sort.
|
132
|
-
reject { |file| file =~ /^\./ }.
|
133
|
-
reject { |file| file =~ /^(rdoc|pkg)/ }.
|
134
|
-
map { |file| " #{file}" }.
|
135
|
-
join("\n")
|
136
|
-
|
137
|
-
# piece file back together and write
|
138
|
-
manifest = " s.files = %w[\n#{files}\n ]\n"
|
139
|
-
spec = [head, manifest, tail].join(" # = MANIFEST =\n")
|
140
|
-
File.open(gemspec_file, 'w') { |io| io.write(spec) }
|
141
|
-
puts "Updated #{gemspec_file}"
|
142
|
-
end
|
143
|
-
|
144
|
-
desc "Update #{name} in bundle"
|
145
|
-
task :update_bundle => :validate do
|
146
|
-
`bundle update #{name}`
|
147
|
-
puts "Bundled #{name} version #{version}"
|
148
|
-
end
|
149
|
-
|
150
|
-
desc "Validate #{gemspec_file}"
|
151
|
-
task :validate do
|
152
|
-
libfiles = Dir['lib/*'] + Dir['lib/*/*'] - [lib_path, File.dirname(lib_path)]
|
153
|
-
unless libfiles.empty?
|
154
|
-
puts "Directory `lib` should only contain a `#{lib_path}` file and `#{name}` dir."
|
155
|
-
exit!
|
156
|
-
end
|
157
|
-
unless Dir['VERSION*'].empty?
|
158
|
-
puts "A `VERSION` file at root level violates Gem best practices."
|
159
|
-
exit!
|
160
|
-
end
|
161
|
-
end
|
8
|
+
task :default => :test
|
data/lib/metriks/middleware.rb
CHANGED
@@ -2,17 +2,14 @@ require 'metriks'
|
|
2
2
|
|
3
3
|
module Metriks
|
4
4
|
class Middleware
|
5
|
-
VERSION = '2.
|
5
|
+
VERSION = '2.1.0'
|
6
6
|
|
7
7
|
REQUEST_DELAY = 'request_delay'
|
8
|
-
HEROKU_DYNOS_IN_USE = 'heroku.dynos_in_use'
|
9
8
|
ERROR_RESPONSE = 'responses.error'
|
10
9
|
NOT_FOUND_RESPONSE = 'responses.not_found'
|
11
10
|
NOT_MODIFIED_RESPONSE = 'responses.not_modified'
|
12
11
|
CONTENT_LENGTH = 'responses.content_length'
|
13
|
-
|
14
12
|
REQUEST_START_HEADER = 'HTTP_X_REQUEST_START'
|
15
|
-
HEROKU_DYNOS_IN_USE_HEADER = 'HTTP_X_HEROKU_DYNOS_IN_USE'
|
16
13
|
|
17
14
|
def initialize(app)
|
18
15
|
@app = app
|
@@ -21,7 +18,6 @@ module Metriks
|
|
21
18
|
def call(env)
|
22
19
|
time_response(env) do
|
23
20
|
record_request_delay env
|
24
|
-
record_heroku_dynos_in_use env
|
25
21
|
record_response env
|
26
22
|
call_downstream env
|
27
23
|
end
|
@@ -44,12 +40,6 @@ module Metriks
|
|
44
40
|
Metriks.histogram(REQUEST_DELAY).update(delay)
|
45
41
|
end
|
46
42
|
|
47
|
-
def record_heroku_dynos_in_use(env)
|
48
|
-
dynos = env[HEROKU_DYNOS_IN_USE_HEADER]
|
49
|
-
return unless dynos
|
50
|
-
Metriks.histogram(HEROKU_DYNOS_IN_USE).update(dynos.to_i)
|
51
|
-
end
|
52
|
-
|
53
43
|
def record_response(env)
|
54
44
|
original_callback = env['async.callback']
|
55
45
|
env['async.callback'] = lambda do |(status, headers, body)|
|
data/metriks-middleware.gemspec
CHANGED
@@ -1,73 +1,36 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
## You can find comprehensive Gem::Specification documentation, at
|
6
|
-
## http://docs.rubygems.org/read/chapter/20
|
7
|
-
Gem::Specification.new do |s|
|
8
|
-
s.specification_version = 2 if s.respond_to? :specification_version=
|
9
|
-
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
10
|
-
s.rubygems_version = '1.3.5'
|
1
|
+
lib = "metriks-middleware"
|
2
|
+
lib_file = File.expand_path("../lib/metriks/middleware.rb", __FILE__)
|
3
|
+
File.read(lib_file) =~ /\bVERSION\s*=\s*["'](.+?)["']/
|
4
|
+
version = $1
|
11
5
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
s.name = 'metriks-middleware'
|
16
|
-
s.version = '2.0.0'
|
17
|
-
s.date = '2013-02-22'
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.specification_version = 2 if spec.respond_to? :specification_version=
|
8
|
+
spec.required_rubygems_version = '>= 1.3.6'
|
18
9
|
|
19
|
-
|
20
|
-
|
21
|
-
s.summary = "Rack middleware for metriks"
|
22
|
-
s.description = "Rack middleware to track throughput and response time with metriks."
|
10
|
+
spec.name = lib
|
11
|
+
spec.version = version
|
23
12
|
|
24
|
-
|
25
|
-
|
26
|
-
## a custom homepage, consider using your GitHub URL or the like.
|
27
|
-
s.authors = ["Larry Marburger"]
|
28
|
-
s.email = 'larry@marburger.cc'
|
29
|
-
s.homepage = 'https://github.com/lmarburger/metriks-middleware'
|
13
|
+
spec.summary = "Rack middleware for metriks"
|
14
|
+
spec.description = "Rack middleware to track throughput and response time with metriks."
|
30
15
|
|
31
|
-
|
32
|
-
|
33
|
-
|
16
|
+
spec.authors = ["Larry Marburger"]
|
17
|
+
spec.email = 'larry@marburger.cc'
|
18
|
+
spec.homepage = 'https://github.com/lmarburger/metriks-middleware'
|
19
|
+
spec.licenses = ['MIT']
|
34
20
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
s.extra_rdoc_files = %w[README.md LICENSE]
|
21
|
+
spec.add_dependency 'metriks', '~> 0.9.9'
|
22
|
+
spec.add_development_dependency 'mocha', '~> 0.11.4'
|
23
|
+
spec.add_development_dependency 'rake', '>= 0.9'
|
39
24
|
|
40
|
-
|
41
|
-
|
42
|
-
|
25
|
+
spec.files = %w(Gemfile LICENSE README.md Rakefile)
|
26
|
+
spec.files << "#{lib}.gemspec"
|
27
|
+
spec.files += Dir.glob("lib/**/*.rb")
|
28
|
+
spec.files += Dir.glob("test/**/*.rb")
|
29
|
+
spec.files += Dir.glob("script/*")
|
43
30
|
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
s.add_development_dependency 'rake', '>= 0.9'
|
31
|
+
dev_null = File.exist?('/dev/null') ? '/dev/null' : 'NUL'
|
32
|
+
git_files = `git ls-files -z 2>#{dev_null}`
|
33
|
+
spec.files &= git_files.split("\0") if $?.success?
|
48
34
|
|
49
|
-
|
50
|
-
## contents of your Git repository via the gemspec task. DO NOT REMOVE
|
51
|
-
## THE MANIFEST COMMENTS, they are used as delimiters by the task.
|
52
|
-
# = MANIFEST =
|
53
|
-
s.files = %w[
|
54
|
-
Gemfile
|
55
|
-
LICENSE
|
56
|
-
README.md
|
57
|
-
Rakefile
|
58
|
-
example/Gemfile
|
59
|
-
example/Gemfile.lock
|
60
|
-
example/Procfile
|
61
|
-
example/config.ru
|
62
|
-
lib/metriks/middleware.rb
|
63
|
-
metriks-middleware.gemspec
|
64
|
-
test/async_app_test.rb
|
65
|
-
test/sync_app_test.rb
|
66
|
-
test/test_helper.rb
|
67
|
-
]
|
68
|
-
# = MANIFEST =
|
69
|
-
|
70
|
-
## Test files will be grabbed from the file list. Make sure the path glob
|
71
|
-
## matches what you actually use.
|
72
|
-
s.test_files = s.files.select { |path| path =~ /^test\/.*_test\.rb/ }
|
35
|
+
spec.test_files = Dir.glob("test/**/*.rb")
|
73
36
|
end
|
data/script/package
ADDED
data/script/release
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
#!/usr/bin/env bash
|
2
|
+
# Usage: script/release
|
3
|
+
# Build the package, tag a commit, push it to origin, and then release the
|
4
|
+
# package publicly.
|
5
|
+
|
6
|
+
# set -e
|
7
|
+
|
8
|
+
version="$(script/package | grep Version: | awk '{print $2}')"
|
9
|
+
[ -n "$version" ] || exit 1
|
10
|
+
|
11
|
+
git commit -a -m "Release $version"
|
12
|
+
git tag "v$version"
|
13
|
+
git push origin
|
14
|
+
git push origin "v$version"
|
15
|
+
gem push pkg/*-${version}.gem
|
data/test/async_app_test.rb
CHANGED
@@ -167,19 +167,4 @@ class AsyncAppTest < Test::Unit::TestCase
|
|
167
167
|
delay = Metriks.histogram('request_delay').mean
|
168
168
|
assert_equal 0, delay
|
169
169
|
end
|
170
|
-
|
171
|
-
def test_omits_heroku_dynos_in_use
|
172
|
-
Metriks::Middleware.new(@downstream).call(@env)
|
173
|
-
|
174
|
-
used = Metriks.histogram('heroku.dynos_in_use').mean
|
175
|
-
assert_equal 0, used
|
176
|
-
end
|
177
|
-
|
178
|
-
def test_records_heroku_dynos_in_use
|
179
|
-
@env.merge! 'HTTP_X_HEROKU_DYNOS_IN_USE' => '42'
|
180
|
-
Metriks::Middleware.new(@downstream).call(@env)
|
181
|
-
|
182
|
-
dynos = Metriks.histogram('heroku.dynos_in_use').mean
|
183
|
-
assert_equal 42, dynos
|
184
|
-
end
|
185
170
|
end
|
data/test/sync_app_test.rb
CHANGED
@@ -106,19 +106,4 @@ class SyncAppTest < Test::Unit::TestCase
|
|
106
106
|
delay = Metriks.histogram('request_delay').mean
|
107
107
|
assert_equal 0, delay
|
108
108
|
end
|
109
|
-
|
110
|
-
def test_omits_heroku_dynos_in_use
|
111
|
-
Metriks::Middleware.new(@downstream).call(@env)
|
112
|
-
|
113
|
-
used = Metriks.histogram('heroku.dynos_in_use').mean
|
114
|
-
assert_equal 0, used
|
115
|
-
end
|
116
|
-
|
117
|
-
def test_records_heroku_dynos_in_use
|
118
|
-
@env.merge! 'HTTP_X_HEROKU_DYNOS_IN_USE' => '42'
|
119
|
-
Metriks::Middleware.new(@downstream).call(@env)
|
120
|
-
|
121
|
-
dynos = Metriks.histogram('heroku.dynos_in_use').mean
|
122
|
-
assert_equal 42, dynos
|
123
|
-
end
|
124
109
|
end
|
metadata
CHANGED
@@ -1,20 +1,18 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: metriks-middleware
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
5
|
-
prerelease:
|
4
|
+
version: 2.1.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Larry Marburger
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-
|
11
|
+
date: 2013-03-22 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: metriks
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
17
|
- - ~>
|
20
18
|
- !ruby/object:Gem::Version
|
@@ -22,7 +20,6 @@ dependencies:
|
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
24
|
- - ~>
|
28
25
|
- !ruby/object:Gem::Version
|
@@ -30,7 +27,6 @@ dependencies:
|
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: mocha
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
31
|
- - ~>
|
36
32
|
- !ruby/object:Gem::Version
|
@@ -38,7 +34,6 @@ dependencies:
|
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
38
|
- - ~>
|
44
39
|
- !ruby/object:Gem::Version
|
@@ -46,7 +41,6 @@ dependencies:
|
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: rake
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
45
|
- - ! '>='
|
52
46
|
- !ruby/object:Gem::Version
|
@@ -54,7 +48,6 @@ dependencies:
|
|
54
48
|
type: :development
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
52
|
- - ! '>='
|
60
53
|
- !ruby/object:Gem::Version
|
@@ -63,51 +56,44 @@ description: Rack middleware to track throughput and response time with metriks.
|
|
63
56
|
email: larry@marburger.cc
|
64
57
|
executables: []
|
65
58
|
extensions: []
|
66
|
-
extra_rdoc_files:
|
67
|
-
- README.md
|
68
|
-
- LICENSE
|
59
|
+
extra_rdoc_files: []
|
69
60
|
files:
|
70
61
|
- Gemfile
|
71
62
|
- LICENSE
|
72
63
|
- README.md
|
73
64
|
- Rakefile
|
74
|
-
- example/Gemfile
|
75
|
-
- example/Gemfile.lock
|
76
|
-
- example/Procfile
|
77
|
-
- example/config.ru
|
78
|
-
- lib/metriks/middleware.rb
|
79
65
|
- metriks-middleware.gemspec
|
66
|
+
- lib/metriks/middleware.rb
|
80
67
|
- test/async_app_test.rb
|
81
68
|
- test/sync_app_test.rb
|
82
69
|
- test/test_helper.rb
|
70
|
+
- script/package
|
71
|
+
- script/release
|
83
72
|
homepage: https://github.com/lmarburger/metriks-middleware
|
84
|
-
licenses:
|
73
|
+
licenses:
|
74
|
+
- MIT
|
75
|
+
metadata: {}
|
85
76
|
post_install_message:
|
86
|
-
rdoc_options:
|
87
|
-
- --charset=UTF-8
|
77
|
+
rdoc_options: []
|
88
78
|
require_paths:
|
89
79
|
- lib
|
90
80
|
required_ruby_version: !ruby/object:Gem::Requirement
|
91
|
-
none: false
|
92
81
|
requirements:
|
93
82
|
- - ! '>='
|
94
83
|
- !ruby/object:Gem::Version
|
95
84
|
version: '0'
|
96
|
-
segments:
|
97
|
-
- 0
|
98
|
-
hash: -1952576612337173392
|
99
85
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
100
|
-
none: false
|
101
86
|
requirements:
|
102
87
|
- - ! '>='
|
103
88
|
- !ruby/object:Gem::Version
|
104
|
-
version:
|
89
|
+
version: 1.3.6
|
105
90
|
requirements: []
|
106
91
|
rubyforge_project:
|
107
|
-
rubygems_version:
|
92
|
+
rubygems_version: 2.0.3
|
108
93
|
signing_key:
|
109
94
|
specification_version: 2
|
110
95
|
summary: Rack middleware for metriks
|
111
96
|
test_files:
|
112
97
|
- test/async_app_test.rb
|
113
98
|
- test/sync_app_test.rb
|
99
|
+
- test/test_helper.rb
|
data/example/Gemfile
DELETED
data/example/Gemfile.lock
DELETED
@@ -1,30 +0,0 @@
|
|
1
|
-
GEM
|
2
|
-
remote: http://rubygems.org/
|
3
|
-
specs:
|
4
|
-
atomic (1.0.1)
|
5
|
-
avl_tree (1.1.3)
|
6
|
-
daemons (1.1.8)
|
7
|
-
eventmachine (0.12.10)
|
8
|
-
foreman (0.49.0)
|
9
|
-
thor (>= 0.13.6)
|
10
|
-
hitimes (1.1.1)
|
11
|
-
metriks (0.9.9.1)
|
12
|
-
atomic (~> 1.0)
|
13
|
-
avl_tree (~> 1.1.2)
|
14
|
-
hitimes (~> 1.1)
|
15
|
-
metriks-middleware (1.1.0)
|
16
|
-
metriks (~> 0.9.9)
|
17
|
-
rack (1.4.1)
|
18
|
-
thin (1.3.1)
|
19
|
-
daemons (>= 1.0.9)
|
20
|
-
eventmachine (>= 0.12.6)
|
21
|
-
rack (>= 1.0.0)
|
22
|
-
thor (0.15.4)
|
23
|
-
|
24
|
-
PLATFORMS
|
25
|
-
ruby
|
26
|
-
|
27
|
-
DEPENDENCIES
|
28
|
-
foreman
|
29
|
-
metriks-middleware
|
30
|
-
thin
|
data/example/Procfile
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
web: bundle exec thin start -p $PORT
|
data/example/config.ru
DELETED
@@ -1,40 +0,0 @@
|
|
1
|
-
$: << 'lib'
|
2
|
-
require 'metriks/middleware'
|
3
|
-
require 'metriks/reporter/logger'
|
4
|
-
require 'pp'
|
5
|
-
|
6
|
-
$stdout.sync = true
|
7
|
-
Thread.abort_on_exception = true
|
8
|
-
|
9
|
-
Metriks::Reporter::Logger.new(logger: Logger.new($stdout), interval: 5).start
|
10
|
-
use Metriks::Middleware
|
11
|
-
|
12
|
-
run(->(env) do
|
13
|
-
case env['PATH_INFO']
|
14
|
-
when '/sync'
|
15
|
-
[200, {'Content-Type' => 'text/plain'}, ['sync!']]
|
16
|
-
|
17
|
-
when '/sync-error'
|
18
|
-
[500, {'Content-Type' => 'text/plain'}, ['sync error!']]
|
19
|
-
|
20
|
-
when '/async'
|
21
|
-
Thread.new do
|
22
|
-
sleep 1
|
23
|
-
env['async.callback'].call([200, {'Content-Type' => 'text/plain'}, ['async!']])
|
24
|
-
end
|
25
|
-
[-1, {}, []]
|
26
|
-
|
27
|
-
when '/async-error'
|
28
|
-
Thread.new do
|
29
|
-
sleep 1
|
30
|
-
env['async.callback'].call([500, {'Content-Type' => 'text/plain'}, ['async error!']])
|
31
|
-
end
|
32
|
-
[-1, {}, []]
|
33
|
-
|
34
|
-
else
|
35
|
-
world = env.keys.sort.each_with_object({}) {|key, world|
|
36
|
-
world[key] = env[key]
|
37
|
-
}
|
38
|
-
[200, {'Content-Type' => 'text/plain'}, [world.pretty_inspect]]
|
39
|
-
end
|
40
|
-
end)
|