chillout 0.2.3 → 0.3.0
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/chillout/client.rb +1 -4
- data/lib/chillout/dispatcher.rb +0 -11
- data/lib/chillout/event_data_builder.rb +0 -32
- data/lib/chillout/railtie.rb +1 -2
- data/lib/chillout/server_side.rb +0 -9
- data/lib/chillout/version.rb +1 -1
- data/lib/chillout.rb +0 -3
- data/test/dispatcher_test.rb +0 -45
- data/test/event_data_builder_test.rb +0 -101
- data/test/server_side_test.rb +0 -12
- metadata +4 -13
- data/lib/chillout/error.rb +0 -60
- data/lib/chillout/error_filter.rb +0 -9
- data/lib/chillout/middleware/exception_monitor.rb +0 -25
- data/test/error_test.rb +0 -115
- data/test/integration/exception_monitor_rack_test.rb +0 -51
- data/test/middleware/exception_monitor_test.rb +0 -54
    
        data/lib/chillout/client.rb
    CHANGED
    
    | @@ -1,10 +1,8 @@ | |
| 1 1 | 
             
            require 'forwardable'
         | 
| 2 2 | 
             
            require 'chillout/server_side'
         | 
| 3 3 | 
             
            require 'chillout/http_client'
         | 
| 4 | 
            -
            require 'chillout/error_filter'
         | 
| 5 4 | 
             
            require 'chillout/dispatcher'
         | 
| 6 5 | 
             
            require 'chillout/config'
         | 
| 7 | 
            -
            require 'chillout/error'
         | 
| 8 6 | 
             
            require 'chillout/event_data_builder'
         | 
| 9 7 | 
             
            require 'chillout/prefixed_logger'
         | 
| 10 8 | 
             
            require 'chillout/worker'
         | 
| @@ -14,7 +12,7 @@ module Chillout | |
| 14 12 | 
             
              class Client
         | 
| 15 13 | 
             
                extend Forwardable
         | 
| 16 14 |  | 
| 17 | 
            -
                def_delegators :@dispatcher, : | 
| 15 | 
            +
                def_delegators :@dispatcher, :send_creations
         | 
| 18 16 |  | 
| 19 17 | 
             
                attr_reader :config
         | 
| 20 18 | 
             
                attr_reader :logger
         | 
| @@ -30,7 +28,6 @@ module Chillout | |
| 30 28 | 
             
                  @http_client = HttpClient.new(@config, logger).freeze
         | 
| 31 29 | 
             
                  @event_data_builder = EventDataBuilder.new(@config).freeze
         | 
| 32 30 | 
             
                  @server_side = ServerSide.new(@event_data_builder, @http_client).freeze
         | 
| 33 | 
            -
                  @filter = ErrorFilter.new
         | 
| 34 31 | 
             
                  @dispatcher = Dispatcher.new(@filter, @server_side).freeze
         | 
| 35 32 | 
             
                  @queue = Queue.new
         | 
| 36 33 | 
             
                end
         | 
    
        data/lib/chillout/dispatcher.rb
    CHANGED
    
    | @@ -8,17 +8,6 @@ module Chillout | |
| 8 8 | 
             
                  @server_side = server_side
         | 
| 9 9 | 
             
                end
         | 
| 10 10 |  | 
| 11 | 
            -
                def dispatch_error(error)
         | 
| 12 | 
            -
                  if @filter.deliver_error?(error)
         | 
| 13 | 
            -
                    send_error(error)
         | 
| 14 | 
            -
                  end
         | 
| 15 | 
            -
                end
         | 
| 16 | 
            -
             | 
| 17 | 
            -
                def send_error(error)
         | 
| 18 | 
            -
                  @server_side.send_error(error)
         | 
| 19 | 
            -
                rescue HttpClient::NotSent
         | 
| 20 | 
            -
                end
         | 
| 21 | 
            -
             | 
| 22 11 | 
             
                def send_creations(creations)
         | 
| 23 12 | 
             
                  @server_side.send_creations(creations)
         | 
| 24 13 | 
             
                rescue HttpClient::NotSent
         | 
| @@ -4,32 +4,6 @@ module Chillout | |
| 4 4 | 
             
                  @config = config
         | 
| 5 5 | 
             
                end
         | 
| 6 6 |  | 
| 7 | 
            -
                def build_from_error(error, timestamp)
         | 
| 8 | 
            -
                  {
         | 
| 9 | 
            -
                    event: "exception",
         | 
| 10 | 
            -
                    timestamp: timestamp,
         | 
| 11 | 
            -
                    content: {
         | 
| 12 | 
            -
                      class: error.exception_class,
         | 
| 13 | 
            -
                      message: error.message,
         | 
| 14 | 
            -
                      backtrace: error.backtrace,
         | 
| 15 | 
            -
                      file: error.file,
         | 
| 16 | 
            -
                      environment: @config.environment,
         | 
| 17 | 
            -
                      context: {
         | 
| 18 | 
            -
                        platform: @config.platform,
         | 
| 19 | 
            -
                        controller: error.controller_name,
         | 
| 20 | 
            -
                        action: error.controller_action,
         | 
| 21 | 
            -
                        current_user: {
         | 
| 22 | 
            -
                          id: error.current_user_id,
         | 
| 23 | 
            -
                          email: error.current_user_email,
         | 
| 24 | 
            -
                          full_name: error.current_user_full_name
         | 
| 25 | 
            -
                        }
         | 
| 26 | 
            -
                      },
         | 
| 27 | 
            -
                      rack_environment: build_rack_environment(error)
         | 
| 28 | 
            -
                    },
         | 
| 29 | 
            -
                    notifier: build_notifier
         | 
| 30 | 
            -
                  }
         | 
| 31 | 
            -
                end
         | 
| 32 | 
            -
             | 
| 33 7 | 
             
                def build_from_creations_container(creations_container, timestamp)
         | 
| 34 8 | 
             
                  {
         | 
| 35 9 | 
             
                    metric: "creations",
         | 
| @@ -56,11 +30,5 @@ module Chillout | |
| 56 30 | 
             
                    url: @config.notifier_url
         | 
| 57 31 | 
             
                  }
         | 
| 58 32 | 
             
                end
         | 
| 59 | 
            -
             | 
| 60 | 
            -
                def build_rack_environment(error)
         | 
| 61 | 
            -
                  Hash[error.environment.collect do |key, value|
         | 
| 62 | 
            -
                    [key, value.to_s]
         | 
| 63 | 
            -
                  end]
         | 
| 64 | 
            -
                end
         | 
| 65 33 | 
             
              end
         | 
| 66 34 | 
             
            end
         | 
    
        data/lib/chillout/railtie.rb
    CHANGED
    
    | @@ -3,7 +3,7 @@ require 'chillout/creation_listener' | |
| 3 3 | 
             
            module Chillout
         | 
| 4 4 | 
             
              class Railtie < Rails::Railtie
         | 
| 5 5 | 
             
                config.chillout = ActiveSupport::OrderedOptions.new
         | 
| 6 | 
            -
                initializer "chillout. | 
| 6 | 
            +
                initializer "chillout.creations_listener_initialization" do |app|
         | 
| 7 7 | 
             
                  if !app.config.chillout.empty?
         | 
| 8 8 | 
             
                    existing_option_keys = [:port, :hostname, :ssl].select{|key| app.config.chillout.has_key?(key)}
         | 
| 9 9 | 
             
                    options_list = existing_option_keys.map{|key| [key, app.config.chillout[key]]}
         | 
| @@ -13,7 +13,6 @@ module Chillout | |
| 13 13 |  | 
| 14 14 | 
             
                    ActiveRecord::Base.extend(CreationListener)
         | 
| 15 15 |  | 
| 16 | 
            -
                    app.middleware.use Middleware::ExceptionMonitor, client
         | 
| 17 16 | 
             
                    app.middleware.use Middleware::CreationsMonitor, client
         | 
| 18 17 |  | 
| 19 18 | 
             
                    client.start_worker
         | 
    
        data/lib/chillout/server_side.rb
    CHANGED
    
    | @@ -9,15 +9,6 @@ module Chillout | |
| 9 9 | 
             
                  @event_data_builder = event_data_builder
         | 
| 10 10 | 
             
                end
         | 
| 11 11 |  | 
| 12 | 
            -
                def send_error(error)
         | 
| 13 | 
            -
                  event_data = @event_data_builder.build_from_error(error, timestamp)
         | 
| 14 | 
            -
                  send_event(event_data)
         | 
| 15 | 
            -
                end
         | 
| 16 | 
            -
             | 
| 17 | 
            -
                def send_event(data)
         | 
| 18 | 
            -
                  @http_client.post('/events', data)
         | 
| 19 | 
            -
                end
         | 
| 20 | 
            -
             | 
| 21 12 | 
             
                def send_creations(creations_container)
         | 
| 22 13 | 
             
                  event_data = @event_data_builder.build_from_creations_container(creations_container, timestamp)
         | 
| 23 14 | 
             
                  send_metric(event_data)
         | 
    
        data/lib/chillout/version.rb
    CHANGED
    
    
    
        data/lib/chillout.rb
    CHANGED
    
    | @@ -1,10 +1,7 @@ | |
| 1 1 | 
             
            require "chillout/version"
         | 
| 2 2 | 
             
            require "chillout/config"
         | 
| 3 | 
            -
            require "chillout/middleware/exception_monitor"
         | 
| 4 3 | 
             
            require "chillout/middleware/creations_monitor"
         | 
| 5 | 
            -
            require "chillout/error"
         | 
| 6 4 | 
             
            require "chillout/dispatcher"
         | 
| 7 | 
            -
            require "chillout/error_filter"
         | 
| 8 5 | 
             
            require "chillout/server_side"
         | 
| 9 6 | 
             
            require "chillout/http_client"
         | 
| 10 7 | 
             
            require "chillout/client"
         | 
    
        data/test/dispatcher_test.rb
    CHANGED
    
    | @@ -1,51 +1,6 @@ | |
| 1 1 | 
             
            require 'test_helper'
         | 
| 2 2 |  | 
| 3 3 | 
             
            class DispatcherTest < ChilloutTestCase
         | 
| 4 | 
            -
             | 
| 5 | 
            -
              def test_error_dispatch
         | 
| 6 | 
            -
                exception = build_exception(NameError)
         | 
| 7 | 
            -
                env = {
         | 
| 8 | 
            -
                  "HTTP_USER_AGENT" => "Mozzila/4.0",
         | 
| 9 | 
            -
                  "rack.session" => {}
         | 
| 10 | 
            -
                }
         | 
| 11 | 
            -
                error = Chillout::Error.new(exception, env)
         | 
| 12 | 
            -
             | 
| 13 | 
            -
                filter = mock("Filter")
         | 
| 14 | 
            -
                filter.expects(:deliver_error?).with(error).returns(true)
         | 
| 15 | 
            -
             | 
| 16 | 
            -
                server_side = mock("ServerSide")
         | 
| 17 | 
            -
                server_side.expects(:send_error).with(error)
         | 
| 18 | 
            -
             | 
| 19 | 
            -
                dispatcher = Chillout::Dispatcher.new(filter, server_side)
         | 
| 20 | 
            -
                dispatcher.dispatch_error(error)
         | 
| 21 | 
            -
              end
         | 
| 22 | 
            -
             | 
| 23 | 
            -
              def test_ignored_error_dispatch
         | 
| 24 | 
            -
                exception = build_exception(NameError)
         | 
| 25 | 
            -
                env = {
         | 
| 26 | 
            -
                  "HTTP_USER_AGENT" => "Mozzila/4.0",
         | 
| 27 | 
            -
                  "rack.session" => {}
         | 
| 28 | 
            -
                }
         | 
| 29 | 
            -
                error = Chillout::Error.new(exception, env)
         | 
| 30 | 
            -
             | 
| 31 | 
            -
                filter = mock("Filter")
         | 
| 32 | 
            -
                filter.expects(:deliver_error?).with(error).returns(false)
         | 
| 33 | 
            -
             | 
| 34 | 
            -
                server_side = mock("ServerSide")
         | 
| 35 | 
            -
             | 
| 36 | 
            -
                dispatcher = Chillout::Dispatcher.new(filter, server_side)
         | 
| 37 | 
            -
                dispatcher.dispatch_error(error)
         | 
| 38 | 
            -
              end
         | 
| 39 | 
            -
             | 
| 40 | 
            -
              def test_send_error_ignore_not_sent_exception
         | 
| 41 | 
            -
                server_side = stub()
         | 
| 42 | 
            -
                server_side.stubs(:send_error).raises(Chillout::HttpClient::NotSent.new(:http_error))
         | 
| 43 | 
            -
             | 
| 44 | 
            -
                dispatcher = Chillout::Dispatcher.new(mock, server_side)
         | 
| 45 | 
            -
             | 
| 46 | 
            -
                assert_nil dispatcher.send_error(:error)
         | 
| 47 | 
            -
              end
         | 
| 48 | 
            -
             | 
| 49 4 | 
             
              def test_send_creations
         | 
| 50 5 | 
             
                filter = mock("Filter")
         | 
| 51 6 |  | 
| @@ -18,99 +18,6 @@ module Chillout | |
| 18 18 | 
             
                  @timestamp = Time.now.iso8601
         | 
| 19 19 | 
             
                end
         | 
| 20 20 |  | 
| 21 | 
            -
                context "build from error" do
         | 
| 22 | 
            -
                  setup do
         | 
| 23 | 
            -
                    @event_data_builder = EventDataBuilder.new(@config)
         | 
| 24 | 
            -
             | 
| 25 | 
            -
                    @controller = mock("Controller")
         | 
| 26 | 
            -
                    @controller.stubs(:controller_name).returns("UsersController")
         | 
| 27 | 
            -
                    @controller.stubs(:action_name).returns("index")
         | 
| 28 | 
            -
             | 
| 29 | 
            -
                    @current_user = mock("User")
         | 
| 30 | 
            -
                    @current_user.stubs(:id).returns(123)
         | 
| 31 | 
            -
                    @current_user.stubs(:email).returns("john@example.com")
         | 
| 32 | 
            -
                    @current_user.stubs(:full_name).returns("john doe")
         | 
| 33 | 
            -
             | 
| 34 | 
            -
                    @exception = build_exception(NameError, "FooBar does not exists")
         | 
| 35 | 
            -
                    @env = {
         | 
| 36 | 
            -
                      'HTTP_USER_AGENT' => 'Mozilla/4.0',
         | 
| 37 | 
            -
                      'action_controller.instance' => @controller,
         | 
| 38 | 
            -
                      'current_user' => @current_user
         | 
| 39 | 
            -
                    }
         | 
| 40 | 
            -
                    @error = Chillout::Error.new(@exception, @env)
         | 
| 41 | 
            -
                    @event_data = @event_data_builder.build_from_error(@error, @timestamp)
         | 
| 42 | 
            -
                  end
         | 
| 43 | 
            -
             | 
| 44 | 
            -
                  def test_event_type
         | 
| 45 | 
            -
                    assert_param :event, 'exception'
         | 
| 46 | 
            -
                  end
         | 
| 47 | 
            -
             | 
| 48 | 
            -
                  def test_timestamp
         | 
| 49 | 
            -
                    assert_param :timestamp, @timestamp
         | 
| 50 | 
            -
                  end
         | 
| 51 | 
            -
             | 
| 52 | 
            -
                  def test_exception_class
         | 
| 53 | 
            -
                    assert_content :class, 'NameError'
         | 
| 54 | 
            -
                  end
         | 
| 55 | 
            -
             | 
| 56 | 
            -
                  def test_exception_message
         | 
| 57 | 
            -
                    assert_content :message, 'FooBar does not exists'
         | 
| 58 | 
            -
                  end
         | 
| 59 | 
            -
             | 
| 60 | 
            -
                  def test_backtrace
         | 
| 61 | 
            -
                    assert_content :backtrace, @exception.backtrace
         | 
| 62 | 
            -
                  end
         | 
| 63 | 
            -
             | 
| 64 | 
            -
                  def test_file
         | 
| 65 | 
            -
                    assert_content :file, @error.file
         | 
| 66 | 
            -
                  end
         | 
| 67 | 
            -
             | 
| 68 | 
            -
                  def test_environment
         | 
| 69 | 
            -
                    assert_content :environment, "development"
         | 
| 70 | 
            -
                  end
         | 
| 71 | 
            -
             | 
| 72 | 
            -
                  def test_platform
         | 
| 73 | 
            -
                    assert_context :platform, "rails"
         | 
| 74 | 
            -
                  end
         | 
| 75 | 
            -
             | 
| 76 | 
            -
                  def test_controller
         | 
| 77 | 
            -
                    assert_context :controller, "UsersController"
         | 
| 78 | 
            -
                  end
         | 
| 79 | 
            -
             | 
| 80 | 
            -
                  def test_action
         | 
| 81 | 
            -
                    assert_context :controller, "UsersController"
         | 
| 82 | 
            -
                  end
         | 
| 83 | 
            -
             | 
| 84 | 
            -
                  def test_current_user_id
         | 
| 85 | 
            -
                    assert_current_user :id, 123
         | 
| 86 | 
            -
                  end
         | 
| 87 | 
            -
             | 
| 88 | 
            -
                  def test_current_user_email
         | 
| 89 | 
            -
                    assert_current_user :email, "john@example.com"
         | 
| 90 | 
            -
                  end
         | 
| 91 | 
            -
             | 
| 92 | 
            -
                  def test_current_user_full_name
         | 
| 93 | 
            -
                    assert_current_user :full_name, "john doe"
         | 
| 94 | 
            -
                  end
         | 
| 95 | 
            -
             | 
| 96 | 
            -
                  def test_rack_environment
         | 
| 97 | 
            -
                    expected_value = Hash[@env.collect { |k,v| [k, v.to_s] }]
         | 
| 98 | 
            -
                    assert_content :rack_environment, expected_value
         | 
| 99 | 
            -
                  end
         | 
| 100 | 
            -
             | 
| 101 | 
            -
                  def test_notifier_name
         | 
| 102 | 
            -
                    assert_notifier :name, "chillout"
         | 
| 103 | 
            -
                  end
         | 
| 104 | 
            -
             | 
| 105 | 
            -
                  def test_notifier_version
         | 
| 106 | 
            -
                    assert_notifier :version, "0.1"
         | 
| 107 | 
            -
                  end
         | 
| 108 | 
            -
             | 
| 109 | 
            -
                  def test_notifier_url
         | 
| 110 | 
            -
                    assert_notifier :url, "http://github.com/arkency/chillout"
         | 
| 111 | 
            -
                  end
         | 
| 112 | 
            -
                end
         | 
| 113 | 
            -
             | 
| 114 21 | 
             
                context "build from creations container" do
         | 
| 115 22 | 
             
                  setup do
         | 
| 116 23 | 
             
                    @creations_container = CreationsContainer.new
         | 
| @@ -166,18 +73,10 @@ module Chillout | |
| 166 73 | 
             
                  assert_equal value, event_data[:content][key]
         | 
| 167 74 | 
             
                end
         | 
| 168 75 |  | 
| 169 | 
            -
                def assert_context(key, value)
         | 
| 170 | 
            -
                  assert_equal value, event_data[:content][:context][key]
         | 
| 171 | 
            -
                end
         | 
| 172 | 
            -
             | 
| 173 76 | 
             
                def assert_creations(key, value)
         | 
| 174 77 | 
             
                  assert_equal value, event_data[:content][:creations][key]
         | 
| 175 78 | 
             
                end
         | 
| 176 79 |  | 
| 177 | 
            -
                def assert_current_user(key, value)
         | 
| 178 | 
            -
                  assert_equal value, event_data[:content][:context][:current_user][key]
         | 
| 179 | 
            -
                end
         | 
| 180 | 
            -
             | 
| 181 80 | 
             
                def assert_notifier(key, value)
         | 
| 182 81 | 
             
                  assert_equal value, event_data[:notifier][key]
         | 
| 183 82 | 
             
                end
         | 
    
        data/test/server_side_test.rb
    CHANGED
    
    | @@ -9,18 +9,6 @@ class ServerSideTest < ChilloutTestCase | |
| 9 9 | 
             
                @server_side = Chillout::ServerSide.new(@event_data_builder, @http_client)
         | 
| 10 10 | 
             
              end
         | 
| 11 11 |  | 
| 12 | 
            -
              def test_send_error_use_event_data_builder
         | 
| 13 | 
            -
                @event_data_builder.expects(:build_from_error).with(:error, anything).returns(:event_data_from_builder)
         | 
| 14 | 
            -
                @http_client.stubs(:post)
         | 
| 15 | 
            -
                @server_side.send_error(:error)
         | 
| 16 | 
            -
              end
         | 
| 17 | 
            -
             | 
| 18 | 
            -
              def test_send_error_use_http_client
         | 
| 19 | 
            -
                @event_data_builder.stubs(:build_from_error).returns(:event_data_from_builder)
         | 
| 20 | 
            -
                @http_client.expects(:post).with('/events', :event_data_from_builder)
         | 
| 21 | 
            -
                @server_side.send_error(:error)
         | 
| 22 | 
            -
              end
         | 
| 23 | 
            -
             | 
| 24 12 | 
             
              def test_send_creations_use_event_data_builder
         | 
| 25 13 | 
             
                @event_data_builder.expects(:build_from_creations_container).with(:creations_container, anything).returns(:event_data_from_builder)
         | 
| 26 14 | 
             
                @http_client.stubs(:post)
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: chillout
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.3.0
         | 
| 5 5 | 
             
              prerelease: 
         | 
| 6 6 | 
             
            platform: ruby
         | 
| 7 7 | 
             
            authors:
         | 
| @@ -10,7 +10,7 @@ authors: | |
| 10 10 | 
             
            autorequire: 
         | 
| 11 11 | 
             
            bindir: bin
         | 
| 12 12 | 
             
            cert_chain: []
         | 
| 13 | 
            -
            date: 2013-03- | 
| 13 | 
            +
            date: 2013-03-16 00:00:00.000000000 Z
         | 
| 14 14 | 
             
            dependencies:
         | 
| 15 15 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 16 16 | 
             
              name: minitest
         | 
| @@ -129,12 +129,9 @@ files: | |
| 129 129 | 
             
            - lib/chillout/creation_listener.rb
         | 
| 130 130 | 
             
            - lib/chillout/creations_container.rb
         | 
| 131 131 | 
             
            - lib/chillout/dispatcher.rb
         | 
| 132 | 
            -
            - lib/chillout/error.rb
         | 
| 133 | 
            -
            - lib/chillout/error_filter.rb
         | 
| 134 132 | 
             
            - lib/chillout/event_data_builder.rb
         | 
| 135 133 | 
             
            - lib/chillout/http_client.rb
         | 
| 136 134 | 
             
            - lib/chillout/middleware/creations_monitor.rb
         | 
| 137 | 
            -
            - lib/chillout/middleware/exception_monitor.rb
         | 
| 138 135 | 
             
            - lib/chillout/prefixed_logger.rb
         | 
| 139 136 | 
             
            - lib/chillout/railtie.rb
         | 
| 140 137 | 
             
            - lib/chillout/server_side.rb
         | 
| @@ -144,13 +141,10 @@ files: | |
| 144 141 | 
             
            - test/config_test.rb
         | 
| 145 142 | 
             
            - test/creations_container_test.rb
         | 
| 146 143 | 
             
            - test/dispatcher_test.rb
         | 
| 147 | 
            -
            - test/error_test.rb
         | 
| 148 144 | 
             
            - test/event_data_builder_test.rb
         | 
| 149 145 | 
             
            - test/http_client_test.rb
         | 
| 150 146 | 
             
            - test/integration/creations_monitor_rack_test.rb
         | 
| 151 | 
            -
            - test/integration/exception_monitor_rack_test.rb
         | 
| 152 147 | 
             
            - test/middleware/creations_monitor_test.rb
         | 
| 153 | 
            -
            - test/middleware/exception_monitor_test.rb
         | 
| 154 148 | 
             
            - test/prefixed_logger_test.rb
         | 
| 155 149 | 
             
            - test/server_side_test.rb
         | 
| 156 150 | 
             
            - test/test_helper.rb
         | 
| @@ -169,7 +163,7 @@ required_ruby_version: !ruby/object:Gem::Requirement | |
| 169 163 | 
             
                  version: '0'
         | 
| 170 164 | 
             
                  segments:
         | 
| 171 165 | 
             
                  - 0
         | 
| 172 | 
            -
                  hash:  | 
| 166 | 
            +
                  hash: 4186506627613896564
         | 
| 173 167 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 174 168 | 
             
              none: false
         | 
| 175 169 | 
             
              requirements:
         | 
| @@ -178,7 +172,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 178 172 | 
             
                  version: '0'
         | 
| 179 173 | 
             
                  segments:
         | 
| 180 174 | 
             
                  - 0
         | 
| 181 | 
            -
                  hash:  | 
| 175 | 
            +
                  hash: 4186506627613896564
         | 
| 182 176 | 
             
            requirements: []
         | 
| 183 177 | 
             
            rubyforge_project: 
         | 
| 184 178 | 
             
            rubygems_version: 1.8.25
         | 
| @@ -190,13 +184,10 @@ test_files: | |
| 190 184 | 
             
            - test/config_test.rb
         | 
| 191 185 | 
             
            - test/creations_container_test.rb
         | 
| 192 186 | 
             
            - test/dispatcher_test.rb
         | 
| 193 | 
            -
            - test/error_test.rb
         | 
| 194 187 | 
             
            - test/event_data_builder_test.rb
         | 
| 195 188 | 
             
            - test/http_client_test.rb
         | 
| 196 189 | 
             
            - test/integration/creations_monitor_rack_test.rb
         | 
| 197 | 
            -
            - test/integration/exception_monitor_rack_test.rb
         | 
| 198 190 | 
             
            - test/middleware/creations_monitor_test.rb
         | 
| 199 | 
            -
            - test/middleware/exception_monitor_test.rb
         | 
| 200 191 | 
             
            - test/prefixed_logger_test.rb
         | 
| 201 192 | 
             
            - test/server_side_test.rb
         | 
| 202 193 | 
             
            - test/test_helper.rb
         | 
    
        data/lib/chillout/error.rb
    DELETED
    
    | @@ -1,60 +0,0 @@ | |
| 1 | 
            -
            require 'ostruct'
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            module Chillout
         | 
| 4 | 
            -
              class Error
         | 
| 5 | 
            -
             | 
| 6 | 
            -
                attr_reader :exception
         | 
| 7 | 
            -
                attr_reader :environment
         | 
| 8 | 
            -
             | 
| 9 | 
            -
                def initialize(exception, environment = {})
         | 
| 10 | 
            -
                  @exception   = exception
         | 
| 11 | 
            -
                  @environment = environment
         | 
| 12 | 
            -
                  @nullObject  = OpenStruct.new
         | 
| 13 | 
            -
                end
         | 
| 14 | 
            -
             | 
| 15 | 
            -
                def exception_class
         | 
| 16 | 
            -
                  exception.class.name
         | 
| 17 | 
            -
                end
         | 
| 18 | 
            -
             | 
| 19 | 
            -
                def message
         | 
| 20 | 
            -
                  exception.message
         | 
| 21 | 
            -
                end
         | 
| 22 | 
            -
             | 
| 23 | 
            -
                def backtrace
         | 
| 24 | 
            -
                  exception.backtrace
         | 
| 25 | 
            -
                end
         | 
| 26 | 
            -
             | 
| 27 | 
            -
                def file
         | 
| 28 | 
            -
                  backtrace.first.split(":").first rescue nil
         | 
| 29 | 
            -
                end
         | 
| 30 | 
            -
             | 
| 31 | 
            -
                def controller
         | 
| 32 | 
            -
                  environment['action_controller.instance'] || @nullObject
         | 
| 33 | 
            -
                end
         | 
| 34 | 
            -
             | 
| 35 | 
            -
                def controller_name
         | 
| 36 | 
            -
                  controller.controller_name
         | 
| 37 | 
            -
                end
         | 
| 38 | 
            -
             | 
| 39 | 
            -
                def controller_action
         | 
| 40 | 
            -
                  controller.action_name
         | 
| 41 | 
            -
                end
         | 
| 42 | 
            -
             | 
| 43 | 
            -
                def current_user
         | 
| 44 | 
            -
                  environment['current_user'] || @nullObject
         | 
| 45 | 
            -
                end
         | 
| 46 | 
            -
             | 
| 47 | 
            -
                def current_user_id
         | 
| 48 | 
            -
                  current_user.id if current_user.respond_to?(:id)
         | 
| 49 | 
            -
                end
         | 
| 50 | 
            -
             | 
| 51 | 
            -
                def current_user_email
         | 
| 52 | 
            -
                  current_user.email if current_user.respond_to?(:email)
         | 
| 53 | 
            -
                end
         | 
| 54 | 
            -
             | 
| 55 | 
            -
                def current_user_full_name
         | 
| 56 | 
            -
                  current_user.full_name if current_user.respond_to?(:full_name)
         | 
| 57 | 
            -
                end
         | 
| 58 | 
            -
             | 
| 59 | 
            -
              end
         | 
| 60 | 
            -
            end
         | 
| @@ -1,25 +0,0 @@ | |
| 1 | 
            -
            module Chillout
         | 
| 2 | 
            -
              module Middleware
         | 
| 3 | 
            -
                class ExceptionMonitor
         | 
| 4 | 
            -
                  def initialize(app, client)
         | 
| 5 | 
            -
                    @app    = app
         | 
| 6 | 
            -
                    @client = client
         | 
| 7 | 
            -
                  end
         | 
| 8 | 
            -
             | 
| 9 | 
            -
                  def call(env)
         | 
| 10 | 
            -
                    begin
         | 
| 11 | 
            -
                      response = @app.call(env)
         | 
| 12 | 
            -
                    rescue Exception => exception
         | 
| 13 | 
            -
                      @client.dispatch_error(Chillout::Error.new(exception, env))
         | 
| 14 | 
            -
                      raise exception
         | 
| 15 | 
            -
                    end
         | 
| 16 | 
            -
             | 
| 17 | 
            -
                    if env['rack.exception']
         | 
| 18 | 
            -
                      @client.dispatch_error(Chillout::Error.new(env['rack.exception'], env))
         | 
| 19 | 
            -
                    end
         | 
| 20 | 
            -
             | 
| 21 | 
            -
                    response
         | 
| 22 | 
            -
                  end
         | 
| 23 | 
            -
                end
         | 
| 24 | 
            -
              end
         | 
| 25 | 
            -
            end
         | 
    
        data/test/error_test.rb
    DELETED
    
    | @@ -1,115 +0,0 @@ | |
| 1 | 
            -
            require 'test_helper'
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            class ErrorTest < ChilloutTestCase
         | 
| 4 | 
            -
             | 
| 5 | 
            -
              def setup
         | 
| 6 | 
            -
                @exception = build_exception(ArgumentError)
         | 
| 7 | 
            -
                @env = { 'charset' => 'utf-8' }
         | 
| 8 | 
            -
                @error = Chillout::Error.new(@exception, @env)
         | 
| 9 | 
            -
              end
         | 
| 10 | 
            -
             | 
| 11 | 
            -
              def test_exception_class
         | 
| 12 | 
            -
                assert_equal "ArgumentError", @error.exception_class
         | 
| 13 | 
            -
              end
         | 
| 14 | 
            -
             | 
| 15 | 
            -
              def test_backtrace
         | 
| 16 | 
            -
                assert_kind_of Array, @error.backtrace
         | 
| 17 | 
            -
              end
         | 
| 18 | 
            -
             | 
| 19 | 
            -
              def test_file
         | 
| 20 | 
            -
                file = File.expand_path('../test_helper.rb', __FILE__)
         | 
| 21 | 
            -
                assert_equal file, @error.file
         | 
| 22 | 
            -
              end
         | 
| 23 | 
            -
             | 
| 24 | 
            -
              context "controller is not given" do
         | 
| 25 | 
            -
             | 
| 26 | 
            -
                def test_controller_name
         | 
| 27 | 
            -
                  assert_nil @error.controller_name
         | 
| 28 | 
            -
                end
         | 
| 29 | 
            -
             | 
| 30 | 
            -
                def test_controller_action
         | 
| 31 | 
            -
                  assert_nil @error.controller_action
         | 
| 32 | 
            -
                end
         | 
| 33 | 
            -
             | 
| 34 | 
            -
              end
         | 
| 35 | 
            -
             | 
| 36 | 
            -
              context "controller is given" do
         | 
| 37 | 
            -
             | 
| 38 | 
            -
                setup do
         | 
| 39 | 
            -
                  @controller = mock("controller")
         | 
| 40 | 
            -
                  @env['action_controller.instance'] = @controller
         | 
| 41 | 
            -
                end
         | 
| 42 | 
            -
             | 
| 43 | 
            -
                def test_controller_action_when_controller_is_set
         | 
| 44 | 
            -
                  @controller.expects(:action_name).returns("index")
         | 
| 45 | 
            -
                  assert_equal "index", @error.controller_action
         | 
| 46 | 
            -
                end
         | 
| 47 | 
            -
             | 
| 48 | 
            -
                def test_controller_name_when_controller_is_set
         | 
| 49 | 
            -
                  @controller.expects(:controller_name).returns("ApplicationController")
         | 
| 50 | 
            -
                  assert_equal "ApplicationController", @error.controller_name
         | 
| 51 | 
            -
                end
         | 
| 52 | 
            -
             | 
| 53 | 
            -
              end
         | 
| 54 | 
            -
             | 
| 55 | 
            -
              context "current user is not given" do
         | 
| 56 | 
            -
             | 
| 57 | 
            -
                def test_current_user_id
         | 
| 58 | 
            -
                  assert_nil @error.current_user_id
         | 
| 59 | 
            -
                end
         | 
| 60 | 
            -
             | 
| 61 | 
            -
                def test_current_user_email
         | 
| 62 | 
            -
                  assert_nil @error.current_user_email
         | 
| 63 | 
            -
                end
         | 
| 64 | 
            -
             | 
| 65 | 
            -
                def test_current_user_full_name
         | 
| 66 | 
            -
                  assert_nil @error.current_user_full_name
         | 
| 67 | 
            -
                end
         | 
| 68 | 
            -
             | 
| 69 | 
            -
              end
         | 
| 70 | 
            -
             | 
| 71 | 
            -
              context "current user is given" do
         | 
| 72 | 
            -
             | 
| 73 | 
            -
                setup do
         | 
| 74 | 
            -
                  @user = mock("user")
         | 
| 75 | 
            -
                  @env['current_user'] = @user
         | 
| 76 | 
            -
                end
         | 
| 77 | 
            -
             | 
| 78 | 
            -
                def test_current_user_id
         | 
| 79 | 
            -
                  @user.expects(:id).returns(123)
         | 
| 80 | 
            -
                  assert_equal 123, @error.current_user_id
         | 
| 81 | 
            -
                end
         | 
| 82 | 
            -
             | 
| 83 | 
            -
                def test_current_user_email
         | 
| 84 | 
            -
                  @user.expects(:email).returns("john@example.net")
         | 
| 85 | 
            -
                  assert_equal "john@example.net", @error.current_user_email
         | 
| 86 | 
            -
                end
         | 
| 87 | 
            -
             | 
| 88 | 
            -
                def test_current_user_full_name
         | 
| 89 | 
            -
                  @user.expects(:full_name).returns("john doe")
         | 
| 90 | 
            -
                  assert_equal "john doe", @error.current_user_full_name
         | 
| 91 | 
            -
                end
         | 
| 92 | 
            -
              end
         | 
| 93 | 
            -
             | 
| 94 | 
            -
              context "current user is given but does not respond to expected methods" do
         | 
| 95 | 
            -
             | 
| 96 | 
            -
                setup do
         | 
| 97 | 
            -
                  @user = mock("user")
         | 
| 98 | 
            -
                  @env['current_user'] = @user
         | 
| 99 | 
            -
                end
         | 
| 100 | 
            -
             | 
| 101 | 
            -
                def test_current_user_id
         | 
| 102 | 
            -
                  assert_nil @error.current_user_id
         | 
| 103 | 
            -
                end
         | 
| 104 | 
            -
             | 
| 105 | 
            -
                def test_current_user_email
         | 
| 106 | 
            -
                  assert_nil @error.current_user_email
         | 
| 107 | 
            -
                end
         | 
| 108 | 
            -
             | 
| 109 | 
            -
                def test_current_user_full_name
         | 
| 110 | 
            -
                  assert_nil @error.current_user_full_name
         | 
| 111 | 
            -
                end
         | 
| 112 | 
            -
             | 
| 113 | 
            -
              end
         | 
| 114 | 
            -
             | 
| 115 | 
            -
            end
         | 
| @@ -1,51 +0,0 @@ | |
| 1 | 
            -
            require 'test_helper'
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            class ExceptionMonitorRackTest < ChilloutTestCase
         | 
| 4 | 
            -
              include Rack::Test::Methods
         | 
| 5 | 
            -
             | 
| 6 | 
            -
              def setup
         | 
| 7 | 
            -
                api_key = "xyz123"
         | 
| 8 | 
            -
                stub_api_request(api_key, "events")
         | 
| 9 | 
            -
                @config = Chillout::Config.new(api_key)
         | 
| 10 | 
            -
                @config.ssl = false
         | 
| 11 | 
            -
                @client = Chillout::Client.new(@config)
         | 
| 12 | 
            -
              end
         | 
| 13 | 
            -
             | 
| 14 | 
            -
              def app
         | 
| 15 | 
            -
                client = @client # Only local variable can be passed to the block below
         | 
| 16 | 
            -
                Rack::Builder.new do
         | 
| 17 | 
            -
                  use Chillout::Middleware::ExceptionMonitor, client
         | 
| 18 | 
            -
                  run(lambda { |env| raise ChilloutTestException.new("Something went wrong") })
         | 
| 19 | 
            -
                end
         | 
| 20 | 
            -
              end
         | 
| 21 | 
            -
             | 
| 22 | 
            -
              def test_exception_class
         | 
| 23 | 
            -
                trigger_error
         | 
| 24 | 
            -
                assert_equal "ChilloutTestException", request_body["content"]["class"]
         | 
| 25 | 
            -
              end
         | 
| 26 | 
            -
             | 
| 27 | 
            -
              def test_exception_message
         | 
| 28 | 
            -
                trigger_error
         | 
| 29 | 
            -
                assert_equal "Something went wrong", request_body["content"]["message"]
         | 
| 30 | 
            -
              end
         | 
| 31 | 
            -
             | 
| 32 | 
            -
              def test_rack_environment
         | 
| 33 | 
            -
                trigger_error
         | 
| 34 | 
            -
                assert_request_body "events" do |body|
         | 
| 35 | 
            -
                  assert_equal last_request.env.keys, body["content"]["rack_environment"].keys
         | 
| 36 | 
            -
                end
         | 
| 37 | 
            -
              end
         | 
| 38 | 
            -
             | 
| 39 | 
            -
              private
         | 
| 40 | 
            -
              def trigger_error
         | 
| 41 | 
            -
                begin
         | 
| 42 | 
            -
                  get "/"
         | 
| 43 | 
            -
                rescue ChilloutTestException
         | 
| 44 | 
            -
                end
         | 
| 45 | 
            -
              end
         | 
| 46 | 
            -
             | 
| 47 | 
            -
              def request_body
         | 
| 48 | 
            -
                assert_request_body("events"){ |body| return body }
         | 
| 49 | 
            -
              end
         | 
| 50 | 
            -
             | 
| 51 | 
            -
            end
         | 
| @@ -1,54 +0,0 @@ | |
| 1 | 
            -
            require 'test_helper'
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            module Chillout
         | 
| 4 | 
            -
              module Middleware
         | 
| 5 | 
            -
                class ExceptionMonitorTest < ChilloutTestCase
         | 
| 6 | 
            -
             | 
| 7 | 
            -
                  class DummyError < StandardError; end
         | 
| 8 | 
            -
             | 
| 9 | 
            -
                  def test_behaves_like_rack_middleware
         | 
| 10 | 
            -
                    env        = { 'HOST' => 'example.net' }
         | 
| 11 | 
            -
                    app        = lambda { |env| [200, env, ['hello']] }
         | 
| 12 | 
            -
                    middleware = ExceptionMonitor.new(app, mock)
         | 
| 13 | 
            -
             | 
| 14 | 
            -
                    response = middleware.call(env)
         | 
| 15 | 
            -
             | 
| 16 | 
            -
                    assert_equal [200, env, ['hello']], response
         | 
| 17 | 
            -
                  end
         | 
| 18 | 
            -
             | 
| 19 | 
            -
                  def test_exception_is_raised
         | 
| 20 | 
            -
                    exception = build_exception(DummyError)
         | 
| 21 | 
            -
                    env = { 'HOST' => 'example.net' }
         | 
| 22 | 
            -
                    app = lambda do |env|
         | 
| 23 | 
            -
                      raise exception
         | 
| 24 | 
            -
                    end
         | 
| 25 | 
            -
                    dispatcher = mock("Dispatcher")
         | 
| 26 | 
            -
                    dispatcher.expects(:dispatch_error).with do |error|
         | 
| 27 | 
            -
                      error.exception == exception && error.environment == env
         | 
| 28 | 
            -
                    end
         | 
| 29 | 
            -
             | 
| 30 | 
            -
                    middleware = ExceptionMonitor.new(app, dispatcher)
         | 
| 31 | 
            -
                    assert_raises DummyError do
         | 
| 32 | 
            -
                      middleware.call(env)
         | 
| 33 | 
            -
                    end
         | 
| 34 | 
            -
                  end
         | 
| 35 | 
            -
             | 
| 36 | 
            -
                  def test_exception_is_found_in_rack_environment
         | 
| 37 | 
            -
                    exception = build_exception(DummyError)
         | 
| 38 | 
            -
                    env = { 'HOST' => 'example.net' }
         | 
| 39 | 
            -
                    app = lambda do |env|
         | 
| 40 | 
            -
                      env['rack.exception'] = exception
         | 
| 41 | 
            -
                      [200, env, ['hello']]
         | 
| 42 | 
            -
                    end
         | 
| 43 | 
            -
                    dispatcher = mock("Dispatcher")
         | 
| 44 | 
            -
                    dispatcher.expects(:dispatch_error).with do |error|
         | 
| 45 | 
            -
                      error.exception == exception && error.environment == env
         | 
| 46 | 
            -
                    end
         | 
| 47 | 
            -
             | 
| 48 | 
            -
                    middleware = ExceptionMonitor.new(app, dispatcher)
         | 
| 49 | 
            -
                    middleware.call(env)
         | 
| 50 | 
            -
                  end
         | 
| 51 | 
            -
             | 
| 52 | 
            -
                end
         | 
| 53 | 
            -
              end
         | 
| 54 | 
            -
            end
         |