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 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