rails_opentracer 0.1.13 → 0.1.17

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: 458b7625f52d1d8fd46f7441e405b23bf73d44f3
4
- data.tar.gz: ecf5a0ffc504ebf4eee8544ce1d3a67d348c87c5
3
+ metadata.gz: d4b4f1d0da3bb306c29407188d87b0cb91a1c902
4
+ data.tar.gz: 290f6e32a69786cc9e5cbdbe07cccd0234ae4d11
5
5
  SHA512:
6
- metadata.gz: 51d88f6bfdd6dd4dc9aad4c0e708429cacef36bcb71bc67df894bef1e7966fbef37d40273cb221ba3fce340d0fa1c666dcd70f10bd0ac3e240cef89f5ad01741
7
- data.tar.gz: 7d7623fb1e6bb9b6f94d988209c23cfe2c877b260dcb7790f0af5a7158d7caa5fe14c8cd8d0bba4753daaa1d1d25acb63d3ab5c0681f63348c8cd5239638cbcf
6
+ metadata.gz: ed247993c756775fe921da26482f61269dae9746ca466b1997464e958c88834521ab07167aa969efd25810d76f1e012b28fe08482b2d14f8d081d859e761ab45
7
+ data.tar.gz: 7f9add5d7bfb1792f1b76e9e46196f4b21da7c15d24bf3c4405bab59c0b1cc859d0b1528b8ead8304511d00bdd3bfb3510ba79fa3868c9e8215dcec19608ff66
data/README.md CHANGED
@@ -7,7 +7,6 @@ this can be changed at a later stage.
7
7
 
8
8
  TODO:
9
9
  - Testz
10
- - Is faraday_tracer.rb required ?
11
10
  - Instrument active record tracing (and give creditz to ruby-rails-tracer's dude)
12
11
  - Are all those generators "the way" we want to do things?
13
12
 
@@ -61,7 +60,9 @@ with_span 'name of span' do
61
60
  end
62
61
  ```
63
62
 
63
+ ## Credits
64
64
 
65
+ Devlopment of this gem has leaned heavily on Iaintshine's (https://github.com/iaintshine) work.
65
66
 
66
67
  ## Development
67
68
 
@@ -4,18 +4,13 @@ module RailsOpentracer
4
4
  module Generators
5
5
  class InstallGenerator < Rails::Generators::Base
6
6
  source_root File.expand_path("../../templates", __FILE__)
7
- desc "Creates rails_faraday_tracer initializer for your application"
7
+ desc "Creates rails_opentracer initializer for your application"
8
8
 
9
9
  def copy_initializer
10
10
  template "rails_opentracer_initializer.rb", "config/initializers/rails_opentracer.rb"
11
11
  puts "Initializer rails_opentracer added successfully"
12
12
  end
13
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
14
  def copy_tracer_middleware
20
15
  template "tracer.rb", "app/middleware/tracer.rb"
21
16
  puts "Tracer middleware added successfully"
@@ -1,7 +1,7 @@
1
- require 'OpenTracing'
2
- require 'Zipkin'
3
- require 'Rails'
1
+ require 'opentracing'
2
+ require 'zipkin'
4
3
 
5
- OpenTracing.global_tracer = Zipkin::Tracer.build(url: ENV['ZIPKIN_SERVICE_URL'], service_name: Rails.application.class.parent_name)
6
-
7
- ActiveRecord::RailsOpentracer.instrument(tracer: OpenTracing.global_tracer, active_span: -> { $active_span })
4
+ if ENV.key?('ZIPKIN_SERVICE_URL')
5
+ OpenTracing.global_tracer = Zipkin::Tracer.build(url: ENV['ZIPKIN_SERVICE_URL'], service_name: Rails.application.class.parent_name)
6
+ ActiveRecord::RailsOpentracer.instrument(tracer: OpenTracing.global_tracer, active_span: -> { $active_span })
7
+ end
@@ -6,26 +6,36 @@ class Tracer
6
6
  end
7
7
 
8
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
9
+ span = nil
10
+ begin
11
+ extracted_ctx = OpenTracing.extract(OpenTracing::FORMAT_RACK, env)
12
+ span_name = env['REQUEST_PATH']
13
+ span =
14
+ if extracted_ctx.nil?
15
+ OpenTracing.start_span(span_name)
16
+ else
17
+ OpenTracing.start_span(span_name, child_of: extracted_ctx)
18
+ end
19
+ $active_span = span # yuck
20
+ rescue StandardError => e
21
+ Rails.logger.error "TRACER_ERROR: #{error_message(e)}"
22
+ return @app.call(env)
23
+ end
19
24
 
20
25
  status, headers, response = @app.call(env)
21
- carrier = {}
22
- OpenTracing.inject(span.context, OpenTracing::FORMAT_RACK, carrier)
23
- span.finish
24
26
 
25
- [status, headers , response]
27
+ begin
28
+ carrier = {}
29
+ OpenTracing.inject(span.context, OpenTracing::FORMAT_RACK, carrier)
30
+ span.finish
31
+ [status, headers , response]
32
+ rescue StandardError => e
33
+ Rails.logger.error "TRACER_ERROR: #{error_message(e)}"
34
+ [status, headers, response]
35
+ end
26
36
  end
27
37
 
28
- def get_span_name(request_path)
29
- Rails.application.routes.recognize_path(request_path).values.map { |i| i.to_s}.join(", ")
38
+ def error_message(e)
39
+ "#{e}\n#{e.backtrace[0, 10].join("\n\t")}"
30
40
  end
31
41
  end
@@ -1,3 +1,3 @@
1
1
  module RailsOpentracer
2
- VERSION = "0.1.13"
2
+ VERSION = "0.1.17"
3
3
  end
@@ -4,7 +4,6 @@ require 'rails_opentracer/version'
4
4
  require 'faraday'
5
5
 
6
6
  module RailsOpentracer
7
-
8
7
  class << self
9
8
  def instrument(tracer: OpenTracing.global_tracer, active_span: nil, active_record: true)
10
9
  ActiveRecord::RailsOpentracer.instrument(tracer: tracer, active_span: active_span) if active_record
@@ -17,14 +16,12 @@ module RailsOpentracer
17
16
 
18
17
  def get(url)
19
18
  connection = Faraday.new do |con|
20
- con.use FaradayTracer
21
19
  con.use Faraday::Adapter::NetHttp
22
20
  end
23
-
24
21
  carrier = {}
25
22
  OpenTracing.inject(@span.context, OpenTracing::FORMAT_RACK, carrier)
26
23
  connection.headers = denilize(carrier)
27
- response = connection.get(url)
24
+ connection.get(url)
28
25
  end
29
26
 
30
27
  def with_span(name)
@@ -38,6 +35,8 @@ module RailsOpentracer
38
35
  @span.finish
39
36
  end
40
37
 
38
+ private
39
+
41
40
  def denilize(hash)
42
41
  hash.each {|k,v| hash[k] = "" if hash[k].nil?}
43
42
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails_opentracer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.13
4
+ version: 0.1.17
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nicholas Erasmus
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-10-17 00:00:00.000000000 Z
11
+ date: 2017-10-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -111,7 +111,6 @@ files:
111
111
  - bin/console
112
112
  - bin/setup
113
113
  - lib/generators/rails_opentracer/install_generator.rb
114
- - lib/generators/templates/faraday_tracer.rb
115
114
  - lib/generators/templates/rails_opentracer_initializer.rb
116
115
  - lib/generators/templates/tracer.rb
117
116
  - lib/rails_opentracer.rb
@@ -1,13 +0,0 @@
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