rails_opentracer 0.1.0 → 0.1.1
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/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
|