rails_opentracer 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/rails_opentracer/generators/rails_opentracer/install_generator.rb +25 -0
- data/lib/rails_opentracer/generators/templates/faraday_tracer.rb +13 -0
- data/lib/rails_opentracer/generators/templates/rails_opentracer_initializer.rb +5 -0
- data/lib/rails_opentracer/generators/templates/tracer.rb +31 -0
- data/lib/rails_opentracer/version.rb +1 -1
- data/lib/rails_opentracer.rb +26 -1
- metadata +5 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c4c181eb9d05e45903b24fc2763d936b7eb5bf5c
|
4
|
+
data.tar.gz: e590daa78234fb7447ce436cd974f57830b9127a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ae5dcc5a1b708f6b4409614a48bdfc8b0453bf76bdc4703d456a46cdafd3eecb7c1e664a18782d7304a891e2e56eb5eb22e7c3d9a7348a9709c4fda902520dbe
|
7
|
+
data.tar.gz: 09e028b25b0afd4020595ecd9876f026e1ee01f8933940e2d2449256c78f148eaedd3b31878f7209b5c66aadac917680fa8a8ab6eb5de6b4d80f27a7583247c6
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'rails/generators'
|
2
|
+
|
3
|
+
module RailsFaradayTracer
|
4
|
+
module Generators
|
5
|
+
class InstallGenerator < Rails::Generators::Base
|
6
|
+
source_root File.expand_path("../../templates", __FILE__)
|
7
|
+
desc "Creates rails_faraday_tracer initializer for your application"
|
8
|
+
|
9
|
+
def copy_initializer
|
10
|
+
template "rails_opentracer_initializer.rb", "config/initializers/rails_opentracer.rb"
|
11
|
+
puts "Initializer rails_opentracer added successfully"
|
12
|
+
end
|
13
|
+
|
14
|
+
def copy_faraday_tracer_middleware
|
15
|
+
template "faraday_tracer.rb", "app/middleware/faraday_tracer.rb"
|
16
|
+
puts "Faraday middleware added successfully"
|
17
|
+
end
|
18
|
+
|
19
|
+
def copy_tracer_middleware
|
20
|
+
template "tracer.rb", "app/middleware/tracer.rb"
|
21
|
+
puts "Tracer middleware added successfully"
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'faraday'
|
2
|
+
# This entire thing might not be necessary at all
|
3
|
+
class FaradayTracer < Faraday::Middleware
|
4
|
+
def initialize(app, options = {})
|
5
|
+
super(app)
|
6
|
+
@name = options.fetch(:name, 'request.faraday')
|
7
|
+
end
|
8
|
+
|
9
|
+
def call(env)
|
10
|
+
@app.call(env).on_complete do |e|
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'zipkin'
|
2
|
+
|
3
|
+
class Tracer
|
4
|
+
def initialize(app)
|
5
|
+
@app = app
|
6
|
+
end
|
7
|
+
|
8
|
+
def call(env)
|
9
|
+
extracted_ctx = OpenTracing.extract(OpenTracing::FORMAT_RACK, env)
|
10
|
+
span_name = get_span_name(env['REQUEST_PATH'])
|
11
|
+
|
12
|
+
span =
|
13
|
+
if extracted_ctx.nil?
|
14
|
+
OpenTracing.start_span(span_name)
|
15
|
+
else
|
16
|
+
OpenTracing.start_span(span_name, child_of: extracted_ctx)
|
17
|
+
end
|
18
|
+
$active_span = span # yuck
|
19
|
+
|
20
|
+
status, headers, response = @app.call(env)
|
21
|
+
carrier = {}
|
22
|
+
OpenTracing.inject(span.context, OpenTracing::FORMAT_RACK, carrier)
|
23
|
+
span.finish
|
24
|
+
|
25
|
+
[status, headers , response]
|
26
|
+
end
|
27
|
+
|
28
|
+
def get_span_name(request_path)
|
29
|
+
Rails.application.routes.recognize_path(request_path).values.map { |i| i.to_s}.join(", ")
|
30
|
+
end
|
31
|
+
end
|
data/lib/rails_opentracer.rb
CHANGED
@@ -1,5 +1,30 @@
|
|
1
1
|
require "rails_opentracer/version"
|
2
2
|
|
3
3
|
module RailsOpentracer
|
4
|
-
|
4
|
+
def faraday_get(url)
|
5
|
+
connection = Faraday.new do |con|
|
6
|
+
con.use FaradayTracer
|
7
|
+
con.use Faraday::Adapter::NetHttp
|
8
|
+
end
|
9
|
+
|
10
|
+
carrier = {}
|
11
|
+
OpenTracing.inject(@span.context, OpenTracing::FORMAT_RACK, carrier)
|
12
|
+
connection.headers = denilize(carrier)
|
13
|
+
response = connection.get(url)
|
14
|
+
end
|
15
|
+
|
16
|
+
def with_span(name)
|
17
|
+
@span =
|
18
|
+
if $active_span.present?
|
19
|
+
OpenTracing.start_span(name, child_of: $active_span)
|
20
|
+
else
|
21
|
+
OpenTracing.start_span(name)
|
22
|
+
end
|
23
|
+
yield if block_given?
|
24
|
+
@span.finish
|
25
|
+
end
|
26
|
+
|
27
|
+
def denilize(hash)
|
28
|
+
hash.each {|k,v| hash[k] = "" if hash[k].nil?}
|
29
|
+
end
|
5
30
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rails_opentracer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Erik Botes
|
@@ -111,6 +111,10 @@ files:
|
|
111
111
|
- bin/console
|
112
112
|
- bin/setup
|
113
113
|
- lib/rails_opentracer.rb
|
114
|
+
- lib/rails_opentracer/generators/rails_opentracer/install_generator.rb
|
115
|
+
- lib/rails_opentracer/generators/templates/faraday_tracer.rb
|
116
|
+
- lib/rails_opentracer/generators/templates/rails_opentracer_initializer.rb
|
117
|
+
- lib/rails_opentracer/generators/templates/tracer.rb
|
114
118
|
- lib/rails_opentracer/version.rb
|
115
119
|
- rails_opentracer.gemspec
|
116
120
|
homepage: https://github.com/erikbotes/rails_opentracer
|