oboe 1.3.0 → 1.3.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.
data/lib/oboe/api/layerinit.rb
CHANGED
@@ -8,7 +8,7 @@ module Oboe
|
|
8
8
|
def report_init(layer)
|
9
9
|
platform_info = { '__Init' => 1 }
|
10
10
|
platform_info['RubyVersion'] = RUBY_VERSION
|
11
|
-
platform_info['RailsVersion'] = Rails.version if defined?(Rails)
|
11
|
+
platform_info['RailsVersion'] = ::Rails.version if defined?(Rails)
|
12
12
|
platform_info['OboeVersion'] = Gem.loaded_specs['oboe'].try(:version).to_s
|
13
13
|
|
14
14
|
force_trace do
|
@@ -1,55 +1,116 @@
|
|
1
|
-
|
2
1
|
module Oboe
|
3
|
-
module
|
4
|
-
module
|
5
|
-
|
6
|
-
# Force load the tracelytics Rails initializer if there is one
|
7
|
-
# Prefer oboe.rb but give priority to tracelytics.rb if it exists
|
8
|
-
if ::Rails::VERSION::MAJOR > 2
|
9
|
-
rails_root = "#{::Rails.root.to_s}"
|
10
|
-
else
|
11
|
-
rails_root = "#{RAILS_ROOT}"
|
12
|
-
end
|
2
|
+
module Rails
|
3
|
+
module Helpers
|
4
|
+
extend ActiveSupport::Concern if ::Rails::VERSION::MAJOR > 2
|
13
5
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
6
|
+
def oboe_rum_header
|
7
|
+
begin
|
8
|
+
return unless Oboe::Config.has_key?(:rum_id)
|
9
|
+
if Oboe::Config.tracing?
|
10
|
+
if request.xhr?
|
11
|
+
header_tmpl = File.dirname(__FILE__) + '/helpers/rum/rum_ajax_header'
|
12
|
+
else
|
13
|
+
header_tmpl = File.dirname(__FILE__) + '/helpers/rum/rum_header'
|
14
|
+
end
|
15
|
+
if ::Rails::VERSION::MAJOR > 2
|
16
|
+
render :file => header_tmpl, :formats => [:js]
|
17
|
+
else
|
18
|
+
render :file => header_tmpl + '.js.erb'
|
19
|
+
end
|
20
|
+
end
|
21
|
+
rescue Exception => e
|
22
|
+
logger.debug "oboe_rum_header: #{e.message}."
|
18
23
|
end
|
19
|
-
require tr_initializer if File.exists?(tr_initializer)
|
20
24
|
end
|
21
|
-
|
22
|
-
def
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
25
|
+
|
26
|
+
def oboe_rum_footer
|
27
|
+
begin
|
28
|
+
return unless Oboe::Config.has_key?(:rum_id)
|
29
|
+
if Oboe::Config.tracing?
|
30
|
+
footer_tmpl = File.dirname(__FILE__) + '/helpers/rum/rum_footer'
|
31
|
+
if ::Rails::VERSION::MAJOR > 2
|
32
|
+
render :file => footer_tmpl, :formats => [:js]
|
33
|
+
else
|
34
|
+
render :file => footer_tmpl + '.js.erb'
|
35
|
+
end
|
29
36
|
end
|
37
|
+
rescue Exception => e
|
38
|
+
logger.debug "oboe_rum_footer: #{e.message}."
|
30
39
|
end
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
40
|
+
end
|
41
|
+
end # Helpers
|
42
|
+
|
43
|
+
def self.load_initializer
|
44
|
+
# Force load the tracelytics Rails initializer if there is one
|
45
|
+
# Prefer oboe.rb but give priority to tracelytics.rb if it exists
|
46
|
+
if ::Rails::VERSION::MAJOR > 2
|
47
|
+
rails_root = "#{::Rails.root.to_s}"
|
48
|
+
else
|
49
|
+
rails_root = "#{RAILS_ROOT}"
|
50
|
+
end
|
51
|
+
|
52
|
+
if File.exists?("#{rails_root}/config/initializers/tracelytics.rb")
|
53
|
+
tr_initializer = "#{rails_root}/config/initializers/tracelytics.rb"
|
54
|
+
else
|
55
|
+
tr_initializer = "#{rails_root}/config/initializers/oboe.rb"
|
56
|
+
end
|
57
|
+
require tr_initializer if File.exists?(tr_initializer)
|
58
|
+
end
|
59
|
+
|
60
|
+
|
61
|
+
def self.load_instrumentation
|
62
|
+
pattern = File.join(File.dirname(__FILE__), 'inst', '*.rb')
|
63
|
+
Dir.glob(pattern) do |f|
|
64
|
+
begin
|
65
|
+
require f
|
66
|
+
rescue => e
|
67
|
+
$stderr.puts "[oboe/loading] Error loading rails insrumentation file '#{f}' : #{e}"
|
35
68
|
end
|
36
69
|
end
|
70
|
+
if ::Rails::VERSION::MAJOR > 2
|
71
|
+
puts "Tracelytics oboe gem #{Gem.loaded_specs['oboe'].version.to_s} successfully loaded."
|
72
|
+
else
|
73
|
+
puts "Tracelytics oboe gem #{Oboe::Version::STRING} successfully loaded."
|
74
|
+
end
|
37
75
|
end
|
38
|
-
|
39
|
-
|
76
|
+
|
77
|
+
def self.include_helpers
|
78
|
+
# TBD: This would make the helpers available to controllers which is occasionally desired.
|
79
|
+
# ActiveSupport.on_load(:action_controller) do
|
80
|
+
# include Oboe::Rails::Helpers
|
81
|
+
# end
|
82
|
+
if ::Rails::VERSION::MAJOR > 2
|
83
|
+
ActiveSupport.on_load(:action_view) do
|
84
|
+
include Oboe::Rails::Helpers
|
85
|
+
end
|
86
|
+
else
|
87
|
+
ActionView::Base.send :include, Oboe::Rails::Helpers
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
end # Rails
|
92
|
+
end # Oboe
|
40
93
|
|
41
94
|
if defined?(::Rails)
|
42
95
|
if ::Rails::VERSION::MAJOR > 2
|
43
96
|
module Oboe
|
44
97
|
class Railtie < ::Rails::Railtie
|
98
|
+
|
99
|
+
initializer 'oboe.helpers' do
|
100
|
+
Oboe::Rails.include_helpers
|
101
|
+
end
|
102
|
+
|
45
103
|
config.after_initialize do
|
46
|
-
Oboe::
|
104
|
+
Oboe::Loading.load_access_key
|
105
|
+
Oboe::Rails.load_instrumentation
|
47
106
|
end
|
48
107
|
end
|
49
108
|
end
|
50
109
|
else
|
51
|
-
Oboe::
|
52
|
-
Oboe::
|
110
|
+
Oboe::Rails.load_initializer
|
111
|
+
Oboe::Loading.load_access_key
|
112
|
+
Oboe::Rails.load_instrumentation
|
113
|
+
Oboe::Rails.include_helpers
|
53
114
|
end
|
54
115
|
end
|
55
116
|
|
data/lib/oboe/loading.rb
CHANGED
@@ -1,9 +1,50 @@
|
|
1
1
|
# Copyright (c) 2012 by Tracelytics, Inc.
|
2
2
|
# All rights reserved.
|
3
3
|
|
4
|
+
require 'digest/sha1'
|
5
|
+
|
4
6
|
module Oboe
|
7
|
+
module Util
|
8
|
+
module Base64URL
|
9
|
+
module_function
|
10
|
+
|
11
|
+
def encode(bin)
|
12
|
+
c = [bin].pack('m0').gsub(/\=+\Z/, '').tr('+/', '-_').rstrip
|
13
|
+
m = c.size % 4
|
14
|
+
c += '=' * (4 - m) if m != 0
|
15
|
+
c
|
16
|
+
end
|
17
|
+
|
18
|
+
def decode(bin)
|
19
|
+
m = bin.size % 4
|
20
|
+
bin += '=' * (4 - m) if m != 0
|
21
|
+
bin.tr('-_', '+/').unpack('m0').first
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
5
26
|
module Loading
|
6
27
|
|
28
|
+
def self.load_access_key
|
29
|
+
unless Oboe::Config.has_key?(:access_key)
|
30
|
+
config_file = '/etc/tracelytics.conf'
|
31
|
+
return unless File.exists?(config_file)
|
32
|
+
|
33
|
+
begin
|
34
|
+
File.open(config_file).each do |line|
|
35
|
+
if line =~ /^tracelyzer.access_key=/ or line =~ /^access_key/
|
36
|
+
bits = line.split(/=/)
|
37
|
+
Oboe::Config[:access_key] = bits[1].strip
|
38
|
+
Oboe::Config[:rum_id] = Oboe::Util::Base64URL.encode(Digest::SHA1.digest("RUM" + Oboe::Config[:access_key]))
|
39
|
+
break
|
40
|
+
end
|
41
|
+
end
|
42
|
+
rescue
|
43
|
+
puts "Having trouble parsing #{config_file}..."
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
7
48
|
def self.require_api
|
8
49
|
require 'oboe/version'
|
9
50
|
|
data/lib/oboe/version.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: oboe
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 25
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 3
|
9
|
-
-
|
10
|
-
version: 1.3.
|
9
|
+
- 1
|
10
|
+
version: 1.3.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Tracelytics, Inc.
|