ridc 0.0.1 → 0.0.3

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.
@@ -0,0 +1,28 @@
1
+ require 'rails'
2
+
3
+ class Ridc::ExceptionReporter
4
+ def initialize(app)
5
+ @app = app
6
+ end
7
+
8
+ def call(env)
9
+ response = @app.call(env)
10
+ rescue Exception => exception
11
+ Ridc::ExceptionReporter.report(exception, env)
12
+ raise exception
13
+ end
14
+
15
+ def self.report(exception, environment)
16
+
17
+ event_session_id = Thread.current["session_id"]
18
+ event_session_content = Thread.current["session_content"]
19
+ event = {
20
+ :exception => exception,
21
+ :environment => environment,
22
+ :event_session_id => event_session_id,
23
+ :event_session_content => event_session_content
24
+ }
25
+ Ridc.sender.send(event)
26
+ end
27
+ end
28
+
data/lib/ridc.rb CHANGED
@@ -1,10 +1,50 @@
1
1
  require 'rails'
2
+ require 'sender'
3
+ require 'exception_reporter'
4
+
5
+ class Ridc::MainRailtie < Rails::Railtie
2
6
 
3
- class Ridc < Rails::Railtie
4
7
  initializer "rails_intelligence.configure_rails_initialization" do |app|
5
8
  ActiveSupport::Notifications.subscribe do |*args|
6
- event = ActiveSupport::Notifications::Event.new *args
7
- Rails.logger.info(event.to_json)
9
+
10
+ event_payload = ActiveSupport::Notifications::Event.new *args
11
+ event_session_id = Thread.current["session_id"]
12
+ event_session_content = Thread.current["session_content"]
13
+
14
+ event = {
15
+ :event => event_payload,
16
+ :event_session_id => event_session_id,
17
+ :event_session_content => event_session_content
18
+ }
19
+ Ridc.sender.send(event)
20
+ # for debugging use:
21
+ # Rails.logger.debug(event.to_json)
22
+ end
23
+
24
+ ActiveSupport.on_load(:action_controller) do
25
+ ActionController::Base.send(:include, SessionToRailsIntelligenceFilter)
8
26
  end
27
+
28
+ middleware_name = if defined?(ActionDispatch::DebugExceptions)
29
+ # for Rails >= 3.2.0
30
+ "ActionDispatch::DebugExceptions"
31
+ else
32
+ # for Rails < 3.2.0
33
+ "ActionDispatch::ShowExceptions"
34
+ end
35
+ app.config.middleware.insert_after middleware_name, "Ridc::ExceptionReporter"
9
36
  end
37
+
38
+ module SessionToRailsIntelligenceFilter
39
+ extend ActiveSupport::Concern
40
+
41
+ included do
42
+ append_before_filter :make_session_available_to_ridc
43
+ end
44
+
45
+ def make_session_available_to_ridc
46
+ Thread.current["session_id"] = request.session_options[:id]
47
+ Thread.current["session_content"] = session
48
+ end
49
+ end
10
50
  end
data/lib/sender.rb ADDED
@@ -0,0 +1,49 @@
1
+ require 'net/http'
2
+ require 'json'
3
+ require 'base64'
4
+ require 'openssl'
5
+ require 'digest/sha1'
6
+
7
+ module Ridc
8
+
9
+ def Ridc.sender
10
+ Thread.current[:ridc_sender] ||= Sender.new("customerKey1" , "secret1", "railsintelligence.com", 8080)
11
+
12
+ end
13
+
14
+ class Sender
15
+
16
+ def initialize(customer_key, secret_key, host, port)
17
+ @customer_key = customer_key
18
+ @secret_key = secret_key
19
+ @host = host
20
+ @port = port
21
+ end
22
+
23
+ def send(event)
24
+ req = Net::HTTP::Post.new("/events", initheader = {'Content-Type' => 'application/json'})
25
+
26
+ body = {
27
+ "customerKey" => @customer_key,
28
+ "signature" => sign_with_secret_key(event.to_json),
29
+ "event" => event
30
+ }.to_json
31
+
32
+ req.body = body
33
+ response = Net::HTTP.new(@host, @port).start { |http| http.request(req) }
34
+ response
35
+ end
36
+
37
+ private
38
+
39
+ def sign_with_secret_key(payload)
40
+ signature = Base64.encode64(
41
+ OpenSSL::HMAC.digest(
42
+ OpenSSL::Digest::Digest.new('sha1'),
43
+ @secret_key, payload)
44
+ ).gsub("\n", "")
45
+
46
+ signature
47
+ end
48
+ end
49
+ end
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.1
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -21,7 +21,8 @@ extensions: []
21
21
  extra_rdoc_files: []
22
22
  files:
23
23
  - lib/ridc.rb
24
- - lib/ri_sender.rb
24
+ - lib/sender.rb
25
+ - lib/exception_reporter.rb
25
26
  homepage: http://www.railsintelligence.com
26
27
  licenses:
27
28
  - MIT
data/lib/ri_sender.rb DELETED
@@ -1,41 +0,0 @@
1
- require 'net/http'
2
- require 'json'
3
- require 'base64'
4
- require 'openssl'
5
- require 'digest/sha1'
6
-
7
- class RiSender
8
-
9
- def initialize(customer_key, secret_key, host, port)
10
- @customer_key = customer_key
11
- @secret_key = secret_key
12
- @host = host
13
- @port = port
14
- end
15
-
16
- def send(event)
17
- req = Net::HTTP::Post.new("/events", initheader = {'Content-Type' => 'application/json'})
18
-
19
- body = {
20
- "customerKey" => @customer_key,
21
- "signature" => sign_with_secret_key(event.to_json),
22
- "event" => event
23
- }.to_json
24
-
25
- req.body = body
26
- response = Net::HTTP.new(@host, @port).start { |http| http.request(req) }
27
- response
28
- end
29
-
30
- private
31
-
32
- def sign_with_secret_key(payload)
33
- signature = Base64.encode64(
34
- OpenSSL::HMAC.digest(
35
- OpenSSL::Digest::Digest.new('sha1'),
36
- @secret_key, payload)
37
- ).gsub("\n", "")
38
-
39
- signature
40
- end
41
- end