ridc 0.0.6 → 0.0.7
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/exception_reporter.rb +7 -3
- data/lib/log_reporter.rb +17 -4
- data/lib/ridc.rb +69 -11
- data/lib/sender.rb +16 -5
- metadata +35 -3
data/lib/exception_reporter.rb
CHANGED
|
@@ -8,6 +8,7 @@ class Ridc::ExceptionReporter
|
|
|
8
8
|
def call(env)
|
|
9
9
|
response = @app.call(env)
|
|
10
10
|
rescue Exception => exception
|
|
11
|
+
#Rails.logger.original.info("yeah!")
|
|
11
12
|
report(exception, env)
|
|
12
13
|
raise exception
|
|
13
14
|
end
|
|
@@ -15,14 +16,17 @@ class Ridc::ExceptionReporter
|
|
|
15
16
|
def report(exception, environment)
|
|
16
17
|
event_session_id = Thread.current["session_id"]
|
|
17
18
|
event_session_content = Thread.current["session_content"]
|
|
19
|
+
|
|
18
20
|
event = {
|
|
19
|
-
:
|
|
21
|
+
:event_type => "exception",
|
|
22
|
+
:exception_class => exception.class.to_s,
|
|
23
|
+
:description => exception.to_s,
|
|
24
|
+
:backtrace => Array(exception.backtrace).join("\n").to_s,
|
|
20
25
|
:environment => useful_environment_parts(environment),
|
|
21
26
|
:event_session_id => event_session_id,
|
|
22
27
|
:event_session_content => event_session_content
|
|
23
28
|
}
|
|
24
|
-
|
|
25
|
-
Ridc.sender.load(event)
|
|
29
|
+
Ridc.sender.add_to_queue(event)
|
|
26
30
|
end
|
|
27
31
|
# thanks raygun4ruby guys!
|
|
28
32
|
def useful_environment_parts(env)
|
data/lib/log_reporter.rb
CHANGED
|
@@ -9,13 +9,26 @@ class Ridc::LogReporter
|
|
|
9
9
|
end
|
|
10
10
|
|
|
11
11
|
def method_missing(m, *args, &block)
|
|
12
|
-
|
|
12
|
+
severities = %w{debug info warn error fatal unknown}
|
|
13
|
+
if severities.include?(m.to_s)
|
|
13
14
|
event = {
|
|
15
|
+
"event_type" => "log_entry",
|
|
14
16
|
"logger_severity" => m.to_s,
|
|
15
|
-
"logger_message" => args.join(' ')
|
|
17
|
+
"logger_message" => args.map{ |x| x.to_s }.join(' ')
|
|
16
18
|
}
|
|
17
|
-
|
|
19
|
+
|
|
20
|
+
Ridc.sender.add_to_queue(event) if event["logger_message"].to_s.length > 0
|
|
21
|
+
elsif m.to_s == "add"
|
|
22
|
+
|
|
23
|
+
event = {
|
|
24
|
+
"event_type" => "log_entry",
|
|
25
|
+
"logger_severity" => severities[args[0]],
|
|
26
|
+
"logger_message" => args.map{ |x| x.to_s }.join(' ')
|
|
27
|
+
}
|
|
28
|
+
Ridc.logger.info("Logging the log!")
|
|
29
|
+
Ridc.sender.add_to_queue(event) if event["logger_message"].to_s.length > 0
|
|
18
30
|
end
|
|
19
|
-
|
|
31
|
+
Ridc.logger.info(m)
|
|
32
|
+
@original.send(m, *args, &block) unless @original.nil? # for rails.version < 4
|
|
20
33
|
end
|
|
21
34
|
end
|
data/lib/ridc.rb
CHANGED
|
@@ -5,22 +5,80 @@ require 'log_reporter'
|
|
|
5
5
|
require 'configuration'
|
|
6
6
|
require 'configuration_generator'
|
|
7
7
|
|
|
8
|
-
class Ridc::MainRailtie < Rails::Railtie
|
|
9
8
|
|
|
9
|
+
#fix for JSON gem/activesupport bug. More info: http://stackoverflow.com/questions/683989/how-do-you-deal-with-the-conflict-between-activesupportjson-and-the-json-gem
|
|
10
|
+
|
|
11
|
+
if defined?(ActiveSupport::JSON)
|
|
12
|
+
[Object,Array, FalseClass, Float, Hash, Integer, NilClass, String, TrueClass].each do |klass|
|
|
13
|
+
klass.class_eval do
|
|
14
|
+
|
|
15
|
+
alias :to_json_raisintelligence_bup :to_json
|
|
16
|
+
def to_json(*args)
|
|
17
|
+
if self.respond_to?("to_ridc_json")
|
|
18
|
+
to_ridc_json(*args)
|
|
19
|
+
else
|
|
20
|
+
to_json_raisintelligence_bup(*args)
|
|
21
|
+
end
|
|
22
|
+
rescue Exception => ex
|
|
23
|
+
return '{ "error":' + %Q{"#{self.class.to_s} - #{ex.to_s}"} + '}'
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
Hash.class_eval do
|
|
29
|
+
def to_ridc_json(*args)
|
|
30
|
+
jsonstring = "{ "
|
|
31
|
+
self.each_pair do |key,value|
|
|
32
|
+
begin
|
|
33
|
+
jsonstring << %Q{"#{key}":} + value.to_json + ","
|
|
34
|
+
rescue Exception => e
|
|
35
|
+
jsonstring << %Q{"#{key}":} + e.to_s.to_json + ","
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
jsonstring.gsub!(/,$/, " }")
|
|
39
|
+
return jsonstring
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
class Ridc::MainRailtie < Rails::Railtie
|
|
10
47
|
initializer "rails_intelligence.configure_rails_initialization" do |app|
|
|
11
|
-
|
|
12
48
|
|
|
13
|
-
|
|
49
|
+
Rails.logger.info("RIDC: Wrapping the rails logger!")
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
if Rails.version.to_i < 4
|
|
55
|
+
Ridc.logger = Rails.logger
|
|
56
|
+
Rails.logger = Ridc::LogReporter.new(Rails.logger)
|
|
57
|
+
else
|
|
58
|
+
Ridc.logger = Logger.new("#{Rails.root}/log/rails_intelligence.log")
|
|
59
|
+
log_reporter = Ridc::LogReporter.new(nil)
|
|
60
|
+
# broadcast to ridcs log reporter
|
|
61
|
+
Rails.logger.extend(ActiveSupport::Logger.broadcast(log_reporter))
|
|
62
|
+
end
|
|
14
63
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
event_payload = ActiveSupport::Notifications::Event.new *args
|
|
18
|
-
|
|
64
|
+
# Rails.logger.original.info("RIDC: Wrapped the rails logger!")
|
|
19
65
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
66
|
+
ActiveSupport::Notifications.subscribe do |name, start, finish, id, payload|
|
|
67
|
+
# |name, start, finish, id, payload|
|
|
68
|
+
#event_payload = ActiveSupport::Notifications::Event.new *args
|
|
69
|
+
#event_payload = ActiveSupport::Notifications::Event.new |name, start, finish, id, payload|
|
|
70
|
+
event = {
|
|
71
|
+
:event_type => "notification",
|
|
72
|
+
:event_payload => {
|
|
73
|
+
:name => name,
|
|
74
|
+
:start => start,
|
|
75
|
+
:finish => finish,
|
|
76
|
+
:id => id,
|
|
77
|
+
:specific => payload
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
Ridc.sender.add_to_queue(event)
|
|
24
82
|
# for debugging use:
|
|
25
83
|
# Rails.logger.original.debug(event.to_json)
|
|
26
84
|
end
|
data/lib/sender.rb
CHANGED
|
@@ -6,12 +6,20 @@ require 'digest/sha1'
|
|
|
6
6
|
require 'socket'
|
|
7
7
|
require 'configuration'
|
|
8
8
|
|
|
9
|
+
|
|
9
10
|
module Ridc
|
|
10
11
|
|
|
11
12
|
SEND_LOOP_DELAY_S = 1
|
|
13
|
+
def Ridc.logger
|
|
14
|
+
@@logger
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def Ridc.logger=(logger)
|
|
18
|
+
@@logger = logger
|
|
19
|
+
end
|
|
12
20
|
|
|
13
21
|
def Ridc.sender
|
|
14
|
-
|
|
22
|
+
# Rails.logger.original.info("RIDC: Getting the sender.")
|
|
15
23
|
Thread.current[:sender_worker] ||= Sender.new(
|
|
16
24
|
Ridc.configuration.customer_key ,
|
|
17
25
|
Ridc.configuration.secret_key,
|
|
@@ -38,11 +46,12 @@ module Ridc
|
|
|
38
46
|
@sender_thread = nil
|
|
39
47
|
end
|
|
40
48
|
|
|
41
|
-
def
|
|
49
|
+
def add_to_queue(event)
|
|
50
|
+
# Rails.logger.original.debug("RIDC: Loading event.")
|
|
42
51
|
event[:event_session_id] = Thread.current["session_id"]
|
|
43
52
|
event[:event_session_content] = Thread.current["session_content"]
|
|
44
53
|
event[:time] = Time.now.utc.to_i
|
|
45
|
-
body = {
|
|
54
|
+
body = {
|
|
46
55
|
"customerKey" => @customer_key,
|
|
47
56
|
"signature" => sign_with_secret_key(event.to_json),
|
|
48
57
|
"event" => event,
|
|
@@ -67,11 +76,13 @@ module Ridc
|
|
|
67
76
|
end
|
|
68
77
|
|
|
69
78
|
def start_sender_thread
|
|
79
|
+
# Rails.logger.original.info("RIDC: Starting sender thread.")
|
|
70
80
|
@sender_thread = Thread.new { send_all_events() }
|
|
71
81
|
@sender_started = true
|
|
72
82
|
end
|
|
73
83
|
|
|
74
84
|
def send_all_events
|
|
85
|
+
# Rails.logger.original.info("RIDC: Sending all events")
|
|
75
86
|
loop do
|
|
76
87
|
begin
|
|
77
88
|
if @queue.empty?
|
|
@@ -80,8 +91,6 @@ module Ridc
|
|
|
80
91
|
body = @queue.pop(true)
|
|
81
92
|
unless body.nil?
|
|
82
93
|
send_request(body)
|
|
83
|
-
else
|
|
84
|
-
sleep(SEND_LOOP_DELAY_S)
|
|
85
94
|
end
|
|
86
95
|
end
|
|
87
96
|
rescue Exception => e
|
|
@@ -91,8 +100,10 @@ module Ridc
|
|
|
91
100
|
end
|
|
92
101
|
|
|
93
102
|
def send_request(body)
|
|
103
|
+
|
|
94
104
|
req = Net::HTTP::Post.new("/events", initheader = {'Content-Type' => 'application/json'})
|
|
95
105
|
req.body = body.to_json
|
|
106
|
+
Ridc.logger.debug("RIDC: Sending event: " + req.body)
|
|
96
107
|
response = Net::HTTP.new(@host, @port).start { |http| http.request(req) }
|
|
97
108
|
return response
|
|
98
109
|
rescue Exception => e
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: ridc
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.7
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -11,8 +11,40 @@ autorequire:
|
|
|
11
11
|
bindir: bin
|
|
12
12
|
cert_chain: []
|
|
13
13
|
date: 2013-12-08 00:00:00.000000000 Z
|
|
14
|
-
dependencies:
|
|
15
|
-
|
|
14
|
+
dependencies:
|
|
15
|
+
- !ruby/object:Gem::Dependency
|
|
16
|
+
name: oj
|
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
|
18
|
+
none: false
|
|
19
|
+
requirements:
|
|
20
|
+
- - ~>
|
|
21
|
+
- !ruby/object:Gem::Version
|
|
22
|
+
version: 2.4.0
|
|
23
|
+
type: :runtime
|
|
24
|
+
prerelease: false
|
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
26
|
+
none: false
|
|
27
|
+
requirements:
|
|
28
|
+
- - ~>
|
|
29
|
+
- !ruby/object:Gem::Version
|
|
30
|
+
version: 2.4.0
|
|
31
|
+
- !ruby/object:Gem::Dependency
|
|
32
|
+
name: multi_json
|
|
33
|
+
requirement: !ruby/object:Gem::Requirement
|
|
34
|
+
none: false
|
|
35
|
+
requirements:
|
|
36
|
+
- - ~>
|
|
37
|
+
- !ruby/object:Gem::Version
|
|
38
|
+
version: 1.8.2
|
|
39
|
+
type: :runtime
|
|
40
|
+
prerelease: false
|
|
41
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
42
|
+
none: false
|
|
43
|
+
requirements:
|
|
44
|
+
- - ~>
|
|
45
|
+
- !ruby/object:Gem::Version
|
|
46
|
+
version: 1.8.2
|
|
47
|
+
description: Data collection for our wonderful new SaaS
|
|
16
48
|
email:
|
|
17
49
|
- senad.uka@gmail.com
|
|
18
50
|
- edin.dazdarevic@gmail.com
|