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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2bb35e317ada2065c35cd47c7e89a7cb2562d34c
4
- data.tar.gz: f4a91370bfd126c6deb8bcebab406a589e69c403
3
+ metadata.gz: c4c181eb9d05e45903b24fc2763d936b7eb5bf5c
4
+ data.tar.gz: e590daa78234fb7447ce436cd974f57830b9127a
5
5
  SHA512:
6
- metadata.gz: ac2ab896d876ccfb2f70ec8a153477c26eba5ecc35597baccd55722fe6598d0eec2f18e96fdac8960e1bf5ada0129a094cbee8821a6435bca521dc4f2352a1ec
7
- data.tar.gz: b24bb6f14c006893fd385b95cc65d40bc27f06393826e43bf37c8a351355ca22547870b6c12391f3242a0916ffcca0a43285336da13c117bfcbc447c03230772
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,5 @@
1
+ require 'OpenTracing'
2
+ require 'Zipkin'
3
+ require 'Rails'
4
+
5
+ OpenTracing.global_tracer = Zipkin::Tracer.build(url: ENV['ZIPKIN_SERVICE_URL'], service_name: Rails.application.class.parent_name)
@@ -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
@@ -1,3 +1,3 @@
1
1
  module RailsOpentracer
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
@@ -1,5 +1,30 @@
1
1
  require "rails_opentracer/version"
2
2
 
3
3
  module RailsOpentracer
4
- # Your code goes here...
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.0
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