metriks-middleware 2.0.0 → 2.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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)
|