ratchetio 0.4.3 → 0.4.4

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.md CHANGED
@@ -1,5 +1,8 @@
1
1
  # Change Log
2
2
 
3
+ **0.4.4**
4
+ - Add `enabled` runtime config flag. When `false`, no data (messages or exceptions) will be reported.
5
+
3
6
  **0.4.3**
4
7
  - Add RSpec test suite. A few minor code changes.
5
8
 
@@ -3,6 +3,7 @@ module Ratchetio
3
3
 
4
4
  attr_accessor :access_token
5
5
  attr_accessor :branch
6
+ attr_accessor :enabled
6
7
  attr_accessor :endpoint
7
8
  attr_accessor :exception_level_filters
8
9
  attr_accessor :environment
@@ -17,6 +18,7 @@ module Ratchetio
17
18
  DEFAULT_ENDPOINT = 'https://submit.ratchet.io/api/1/item/'
18
19
 
19
20
  def initialize
21
+ @enabled = true
20
22
  @endpoint = DEFAULT_ENDPOINT
21
23
  @framework = 'Plain'
22
24
  @exception_level_filters = {
@@ -1,3 +1,3 @@
1
1
  module Ratchetio
2
- VERSION = "0.4.3"
2
+ VERSION = "0.4.4"
3
3
  end
data/lib/ratchetio.rb CHANGED
@@ -46,6 +46,10 @@ module Ratchetio
46
46
  # @param person_data [Hash] Data describing the affected person. Should be the result of calling
47
47
  # `ratchetio_person_data`
48
48
  def report_exception(exception, request_data = nil, person_data = nil)
49
+ unless configuration.enabled
50
+ return
51
+ end
52
+
49
53
  filtered_level = configuration.exception_level_filters[exception.class.name]
50
54
  if filtered_level == 'ignore'
51
55
  # ignored - do nothing
@@ -74,6 +78,10 @@ module Ratchetio
74
78
  # @param extra_data [Hash] Additional data to include alongside the body. Don't use 'body' as
75
79
  # it is reserved.
76
80
  def report_message(message, level = 'info', extra_data = {})
81
+ unless configuration.enabled
82
+ return
83
+ end
84
+
77
85
  data = message_data(message, level, extra_data)
78
86
  payload = build_payload(data)
79
87
  send_payload(payload)
@@ -10,6 +10,110 @@ describe HomeController do
10
10
 
11
11
  let(:logger_mock) { double("Rails.logger").as_null_object }
12
12
 
13
+ context "ratchetio controller methods" do
14
+ # TODO run these for a a more-real request
15
+ it "should build valid request data" do
16
+ data = @controller.ratchetio_request_data
17
+ data.should have_key(:params)
18
+ data.should have_key(:url)
19
+ data.should have_key(:user_ip)
20
+ data.should have_key(:headers)
21
+ data.should have_key(:GET)
22
+ data.should have_key(:session)
23
+ data.should have_key(:method)
24
+ end
25
+
26
+ it "should build empty person data when no one is logged-in" do
27
+ data = @controller.ratchetio_person_data
28
+ data.should == {}
29
+ end
30
+
31
+ context "ratchetio_filter_params" do
32
+ it "should filter files" do
33
+ name = "John Doe"
34
+ file_hash = {
35
+ :filename => "test.txt",
36
+ :type => "text/plain",
37
+ :head => {},
38
+ :tempfile => "dummy"
39
+ }
40
+ file = ActionDispatch::Http::UploadedFile.new(file_hash)
41
+
42
+ params = {
43
+ :name => name,
44
+ :a_file => file
45
+ }
46
+
47
+ filtered = controller.send(:ratchetio_filter_params, params)
48
+
49
+ filtered[:name].should == name
50
+ filtered[:a_file].should be_a_kind_of(Hash)
51
+ filtered[:a_file][:content_type].should == file_hash[:type]
52
+ filtered[:a_file][:original_filename].should == file_hash[:filename]
53
+ filtered[:a_file][:size].should == file_hash[:tempfile].size
54
+ end
55
+
56
+ it "should filter files in nested params" do
57
+ name = "John Doe"
58
+ file_hash = {
59
+ :filename => "test.txt",
60
+ :type => "text/plain",
61
+ :head => {},
62
+ :tempfile => "dummy"
63
+ }
64
+ file = ActionDispatch::Http::UploadedFile.new(file_hash)
65
+
66
+ params = {
67
+ :name => name,
68
+ :wrapper => {
69
+ :wrapper2 => {
70
+ :a_file => file,
71
+ :foo => "bar"
72
+ }
73
+ }
74
+ }
75
+
76
+ filtered = controller.send(:ratchetio_filter_params, params)
77
+
78
+ filtered[:name].should == name
79
+ filtered[:wrapper][:wrapper2][:foo].should == "bar"
80
+
81
+ filtered_file = filtered[:wrapper][:wrapper2][:a_file]
82
+ filtered_file.should be_a_kind_of(Hash)
83
+ filtered_file[:content_type].should == file_hash[:type]
84
+ filtered_file[:original_filename].should == file_hash[:filename]
85
+ filtered_file[:size].should == file_hash[:tempfile].size
86
+ end
87
+ end
88
+
89
+ context "ratchetio_request_url" do
90
+ it "should build simple http urls" do
91
+ req = controller.request
92
+ req.host = 'ratchet.io'
93
+
94
+ controller.send(:ratchetio_request_url).should == 'http://ratchet.io'
95
+ end
96
+ end
97
+
98
+ context "ratchetio_user_ip" do
99
+ it "should use X-Real-Ip when set" do
100
+ controller.request.env["HTTP_X_REAL_IP"] = '1.1.1.1'
101
+ controller.request.env["HTTP_X_FORWARDED_FOR"] = '1.2.3.4'
102
+ controller.send(:ratchetio_user_ip).should == '1.1.1.1'
103
+ end
104
+
105
+ it "should use X-Forwarded-For when set" do
106
+ controller.request.env["HTTP_X_FORWARDED_FOR"] = '1.2.3.4'
107
+ controller.send(:ratchetio_user_ip).should == '1.2.3.4'
108
+ end
109
+
110
+ it "should use the remote_addr when neither is set" do
111
+ controller.send(:ratchetio_user_ip).should == '0.0.0.0'
112
+ end
113
+ end
114
+
115
+ end
116
+
13
117
  describe "GET 'index'" do
14
118
  it "should be successful and report a message" do
15
119
  logger_mock.should_receive(:info).with('[Ratchet.io] Sending payload')
@@ -28,7 +28,6 @@ db/*.sqlite3
28
28
  .redcar/
29
29
  .sass-cache
30
30
  /config/config.yml
31
- /config/database.yml
32
31
  /coverage.data
33
32
  /coverage/
34
33
  /db/*.javadb/
@@ -0,0 +1,28 @@
1
+ # SQLite version 3.x
2
+ # gem install sqlite3
3
+ #
4
+ # Ensure the SQLite 3 gem is defined in your Gemfile
5
+ # gem 'sqlite3'
6
+ development:
7
+ adapter: sqlite3
8
+ database: db/development.sqlite3
9
+ pool: 5
10
+ timeout: 5000
11
+
12
+ # Warning: The database defined as "test" will be erased and
13
+ # re-generated from your development database when you run "rake".
14
+ # Do not set this db to the same as development or production.
15
+ test: &test
16
+ adapter: sqlite3
17
+ database: db/test.sqlite3
18
+ pool: 5
19
+ timeout: 5000
20
+
21
+ production:
22
+ adapter: sqlite3
23
+ database: db/production.sqlite3
24
+ pool: 5
25
+ timeout: 5000
26
+
27
+ cucumber:
28
+ <<: *test
@@ -3,8 +3,6 @@ require 'spec_helper'
3
3
 
4
4
  describe Ratchetio do
5
5
 
6
- it 'controller methods'
7
-
8
6
  context 'report_exception' do
9
7
  before(:each) do
10
8
  configure
@@ -26,6 +24,19 @@ describe Ratchetio do
26
24
  Ratchetio.report_exception(@exception)
27
25
  end
28
26
 
27
+ it 'should not report anything when disabled' do
28
+ logger_mock.should_not_receive(:info).with('[Ratchet.io] Sending payload')
29
+ Ratchetio.configure do |config|
30
+ config.enabled = false
31
+ end
32
+
33
+ Ratchetio.report_exception(@exception)
34
+
35
+ Ratchetio.configure do |config|
36
+ config.enabled = true
37
+ end
38
+ end
39
+
29
40
  it 'should report exceptions with request and person data' do
30
41
  logger_mock.should_receive(:info).with('[Ratchet.io] Sending payload')
31
42
  request_data = {
@@ -78,6 +89,19 @@ describe Ratchetio do
78
89
  Ratchetio.report_message("Test message")
79
90
  end
80
91
 
92
+ it 'should not report anything when disabled' do
93
+ logger_mock.should_not_receive(:info).with('[Ratchet.io] Sending payload')
94
+ Ratchetio.configure do |config|
95
+ config.enabled = false
96
+ end
97
+
98
+ Ratchetio.report_message("Test message that should be ignored")
99
+
100
+ Ratchetio.configure do |config|
101
+ config.enabled = true
102
+ end
103
+ end
104
+
81
105
  it 'should report messages with extra data' do
82
106
  logger_mock.should_receive(:info).with('[Ratchet.io] Sending payload')
83
107
  Ratchetio.report_message("Test message with extra data", 'debug', :foo => "bar",
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ratchetio
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.3
4
+ version: 0.4.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-11-21 00:00:00.000000000 Z
12
+ date: 2012-11-22 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec-rails
@@ -276,6 +276,7 @@ files:
276
276
  - spec/dummyapp/config/application.rb
277
277
  - spec/dummyapp/config/boot.rb
278
278
  - spec/dummyapp/config/cucumber.yml
279
+ - spec/dummyapp/config/database.yml
279
280
  - spec/dummyapp/config/environment.rb
280
281
  - spec/dummyapp/config/environments/development.rb
281
282
  - spec/dummyapp/config/environments/production.rb
@@ -371,6 +372,7 @@ test_files:
371
372
  - spec/dummyapp/config/application.rb
372
373
  - spec/dummyapp/config/boot.rb
373
374
  - spec/dummyapp/config/cucumber.yml
375
+ - spec/dummyapp/config/database.yml
374
376
  - spec/dummyapp/config/environment.rb
375
377
  - spec/dummyapp/config/environments/development.rb
376
378
  - spec/dummyapp/config/environments/production.rb
@@ -408,4 +410,3 @@ test_files:
408
410
  - spec/ratchetio_spec.rb
409
411
  - spec/spec_helper.rb
410
412
  - spec/support/devise.rb
411
- has_rdoc: