rails_opentracer 0.1.13 → 0.1.17

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