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 +4 -4
- data/README.md +2 -1
- data/lib/generators/rails_opentracer/install_generator.rb +1 -6
- data/lib/generators/templates/rails_opentracer_initializer.rb +6 -6
- data/lib/generators/templates/tracer.rb +26 -16
- data/lib/rails_opentracer/version.rb +1 -1
- data/lib/rails_opentracer.rb +3 -4
- metadata +2 -3
- data/lib/generators/templates/faraday_tracer.rb +0 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d4b4f1d0da3bb306c29407188d87b0cb91a1c902
|
4
|
+
data.tar.gz: 290f6e32a69786cc9e5cbdbe07cccd0234ae4d11
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
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 '
|
2
|
-
require '
|
3
|
-
require 'Rails'
|
1
|
+
require 'opentracing'
|
2
|
+
require 'zipkin'
|
4
3
|
|
5
|
-
|
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
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
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
|
-
|
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
|
29
|
-
|
38
|
+
def error_message(e)
|
39
|
+
"#{e}\n#{e.backtrace[0, 10].join("\n\t")}"
|
30
40
|
end
|
31
41
|
end
|
data/lib/rails_opentracer.rb
CHANGED
@@ -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
|
-
|
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.
|
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-
|
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
|