thirtysix 0.0.2 → 0.0.3
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 +4 -4
- data/lib/thirtysix/rack/middleware.rb +80 -0
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0ebddafbe1045a12501e5df96fa6d2b15e6c5c72
|
4
|
+
data.tar.gz: 711d3d9cea916f2c5ae650d3378d88767b176755
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d5573dab0362dbed7e830a8738ca0853cc3c41690a719e03df7890d883ab323aeb959ca3c2308a8b65d08c0ce08a83aeebdde12e8fd372a9784995a5c5bffed3
|
7
|
+
data.tar.gz: 1fbdedda992ad6855922ea3cccec2bead0745d41175eaf98fbb6b4982c8ba04ba68bbbb6ebf92fbc8a38c5b3f6b55a717a6d3fd1b5ed69cb9e159e60261d6fb9
|
@@ -0,0 +1,80 @@
|
|
1
|
+
require 'objspace'
|
2
|
+
require 'thirtysix/app_request'
|
3
|
+
require 'thirtysix/rack/railtie' if defined?(Rails)
|
4
|
+
|
5
|
+
module Thirtysix
|
6
|
+
module Rack
|
7
|
+
class Middleware
|
8
|
+
def initialize(app)
|
9
|
+
puts "Thirtysix: Initializing Middleware"
|
10
|
+
@app = app
|
11
|
+
end
|
12
|
+
|
13
|
+
def call(env)
|
14
|
+
start_time = Time.now
|
15
|
+
start_memory = get_memory
|
16
|
+
start_objects = ObjectSpace.count_objects_size
|
17
|
+
|
18
|
+
status, headers, body = @app.call(env)
|
19
|
+
|
20
|
+
if env["ORIGINAL_FULLPATH"].include? "assets"
|
21
|
+
puts "Thirtysix: Skipping instrumentation for assets requests"
|
22
|
+
else
|
23
|
+
end_time = Time.now
|
24
|
+
end_memory = get_memory
|
25
|
+
end_objects = ObjectSpace.count_objects_size
|
26
|
+
|
27
|
+
app_request = Thirtysix::AppRequest.new
|
28
|
+
app_request.request_time_in_milliseconds = ((end_time - start_time) * 1000).to_i
|
29
|
+
app_request.memory_in_mb = end_memory - start_memory
|
30
|
+
app_request.build(start_objects, end_objects, env)
|
31
|
+
|
32
|
+
push app_request
|
33
|
+
end
|
34
|
+
|
35
|
+
[status, headers, body]
|
36
|
+
end
|
37
|
+
|
38
|
+
#
|
39
|
+
# Returns current process' memory usage in MB
|
40
|
+
# Returns nil if any error occurred
|
41
|
+
# Only works on Darwin10
|
42
|
+
# Shamelessly stolen from:
|
43
|
+
# https://github.com/newrelic/rpm/blob/master/lib/new_relic/agent/samplers/memory_sampler.rb
|
44
|
+
#
|
45
|
+
def get_memory
|
46
|
+
(`ps -o rss #{$$}`.split("\n")[1].to_f / 1024.0) rescue nil
|
47
|
+
end
|
48
|
+
|
49
|
+
def thirtysix_api_key
|
50
|
+
ENV['THIRTYSIX_API_KEY']
|
51
|
+
end
|
52
|
+
|
53
|
+
def thirtysix_url
|
54
|
+
ENV['THIRTYSIX_URL']
|
55
|
+
end
|
56
|
+
|
57
|
+
def thirtysix_path
|
58
|
+
"/api/app_requests"
|
59
|
+
end
|
60
|
+
|
61
|
+
def endpoint_uri
|
62
|
+
@endpoint_uri ||= URI(thirtysix_url + thirtysix_path)
|
63
|
+
end
|
64
|
+
|
65
|
+
def push(app_request)
|
66
|
+
begin
|
67
|
+
http = Net::HTTP.new(endpoint_uri.host, endpoint_uri.port)
|
68
|
+
http.open_timeout = 0.2
|
69
|
+
http.read_timeout = 0.2
|
70
|
+
headers = {'Content-Type' => 'text/json', 'X-THIRTYSIX-API-KEY' => thirtysix_api_key}
|
71
|
+
request = Net::HTTP::Post.new(endpoint_uri.request_uri, headers)
|
72
|
+
request.body = app_request.to_json
|
73
|
+
response = http.request(request)
|
74
|
+
rescue Exception => e
|
75
|
+
puts "Thirtysix: We could not contact the Thirtysix client on #{thirtysix_url} [#{e.message}]"
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: thirtysix
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gary Moore
|
@@ -18,6 +18,7 @@ extra_rdoc_files: []
|
|
18
18
|
files:
|
19
19
|
- Gemfile
|
20
20
|
- README.md
|
21
|
+
- lib/thirtysix/rack/middleware.rb
|
21
22
|
homepage: http://github.com/gmoore/thirtysix
|
22
23
|
licenses:
|
23
24
|
- MIT
|