bugsnag 1.0.10 → 1.1.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/Gemfile.lock +12 -7
 - data/README.md +230 -0
 - data/VERSION +1 -1
 - data/bugsnag.gemspec +5 -5
 - data/lib/bugsnag.rb +3 -2
 - data/lib/bugsnag/configuration.rb +10 -3
 - data/lib/bugsnag/notification.rb +44 -31
 - data/lib/bugsnag/railtie.rb +4 -3
 - data/lib/resque/failure/bugsnag.rb +47 -0
 - metadata +13 -13
 - data/README.rdoc +0 -19
 - data/lib/bugsnag/resque.rb +0 -36
 
    
        data/Gemfile.lock
    CHANGED
    
    | 
         @@ -1,18 +1,23 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            GEM
         
     | 
| 
       2 
2 
     | 
    
         
             
              remote: http://rubygems.org/
         
     | 
| 
       3 
3 
     | 
    
         
             
              specs:
         
     | 
| 
       4 
     | 
    
         
            -
                crack (0.1.8)
         
     | 
| 
       5 
4 
     | 
    
         
             
                git (1.2.5)
         
     | 
| 
       6 
     | 
    
         
            -
                httparty (0. 
     | 
| 
       7 
     | 
    
         
            -
                   
     | 
| 
      
 5 
     | 
    
         
            +
                httparty (0.8.3)
         
     | 
| 
      
 6 
     | 
    
         
            +
                  multi_json (~> 1.0)
         
     | 
| 
      
 7 
     | 
    
         
            +
                  multi_xml
         
     | 
| 
       8 
8 
     | 
    
         
             
                jeweler (1.6.4)
         
     | 
| 
       9 
9 
     | 
    
         
             
                  bundler (~> 1.0)
         
     | 
| 
       10 
10 
     | 
    
         
             
                  git (>= 1.2.5)
         
     | 
| 
       11 
11 
     | 
    
         
             
                  rake
         
     | 
| 
       12 
     | 
    
         
            -
                multi_json (1. 
     | 
| 
       13 
     | 
    
         
            -
                 
     | 
| 
       14 
     | 
    
         
            -
                 
     | 
| 
       15 
     | 
    
         
            -
                 
     | 
| 
      
 12 
     | 
    
         
            +
                multi_json (1.3.2)
         
     | 
| 
      
 13 
     | 
    
         
            +
                multi_xml (0.4.4)
         
     | 
| 
      
 14 
     | 
    
         
            +
                rake (0.9.2.2)
         
     | 
| 
      
 15 
     | 
    
         
            +
                rcov (1.0.0)
         
     | 
| 
      
 16 
     | 
    
         
            +
                shoulda (3.0.1)
         
     | 
| 
      
 17 
     | 
    
         
            +
                  shoulda-context (~> 1.0.0)
         
     | 
| 
      
 18 
     | 
    
         
            +
                  shoulda-matchers (~> 1.0.0)
         
     | 
| 
      
 19 
     | 
    
         
            +
                shoulda-context (1.0.0)
         
     | 
| 
      
 20 
     | 
    
         
            +
                shoulda-matchers (1.0.0)
         
     | 
| 
       16 
21 
     | 
    
         | 
| 
       17 
22 
     | 
    
         
             
            PLATFORMS
         
     | 
| 
       18 
23 
     | 
    
         
             
              ruby
         
     | 
    
        data/README.md
    ADDED
    
    | 
         @@ -0,0 +1,230 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            Official Bugsnag Notifier for Ruby
         
     | 
| 
      
 2 
     | 
    
         
            +
            ==================================
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            The Bugsnag Notifier for Ruby gives you instant notification of exceptions
         
     | 
| 
      
 5 
     | 
    
         
            +
            thrown from your **Rails**, **Sinatra**, **Rack** or **plain Ruby** app.
         
     | 
| 
      
 6 
     | 
    
         
            +
            Any uncaught exceptions will trigger a notification to be sent to your 
         
     | 
| 
      
 7 
     | 
    
         
            +
            Bugsnag project.
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            What is Bugsnag?
         
     | 
| 
      
 11 
     | 
    
         
            +
            ----------------
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
            [Bugsnag](http://bugsnag.com) captures errors in real-time from your web, 
         
     | 
| 
      
 14 
     | 
    
         
            +
            mobile and desktop applications, helping you to understand and resolve them 
         
     | 
| 
      
 15 
     | 
    
         
            +
            as fast as possible. [Create a free account](http://bugsnag.com).
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
            How to Install (Rails)
         
     | 
| 
      
 19 
     | 
    
         
            +
            ----------------------
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
            1.  Add the `bugsnag` gem to your `Gemfile`
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
                ```ruby
         
     | 
| 
      
 24 
     | 
    
         
            +
                gem "bugsnag"
         
     | 
| 
      
 25 
     | 
    
         
            +
                ```
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
            2.  Install the gem
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
                ```shell
         
     | 
| 
      
 30 
     | 
    
         
            +
                bundle install
         
     | 
| 
      
 31 
     | 
    
         
            +
                ```
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
            3.  Copy the following code to a new file at `config/initializers/bugsnag.rb`
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
                ```ruby
         
     | 
| 
      
 36 
     | 
    
         
            +
                Bugsnag.configure do |config|
         
     | 
| 
      
 37 
     | 
    
         
            +
                  config.api_key = "YOUR_API_KEY_HERE"
         
     | 
| 
      
 38 
     | 
    
         
            +
                end
         
     | 
| 
      
 39 
     | 
    
         
            +
                ```
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
            How to Install (Sinatra)
         
     | 
| 
      
 42 
     | 
    
         
            +
            ------------------------
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 45 
     | 
    
         
            +
            require "bugsnag"
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
            Bugsnag.configure do |config|
         
     | 
| 
      
 48 
     | 
    
         
            +
              config.api_key = "YOUR_API_KEY_HERE"
         
     | 
| 
      
 49 
     | 
    
         
            +
            end
         
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
      
 51 
     | 
    
         
            +
            use Bugsnag::Rack
         
     | 
| 
      
 52 
     | 
    
         
            +
            ```
         
     | 
| 
      
 53 
     | 
    
         
            +
             
     | 
| 
      
 54 
     | 
    
         
            +
             
     | 
| 
      
 55 
     | 
    
         
            +
            Send Non-Fatal Exceptions to Bugsnag
         
     | 
| 
      
 56 
     | 
    
         
            +
            ------------------------------------
         
     | 
| 
      
 57 
     | 
    
         
            +
             
     | 
| 
      
 58 
     | 
    
         
            +
            If you would like to send non-fatal exceptions to Bugsnag, there are two 
         
     | 
| 
      
 59 
     | 
    
         
            +
            ways of doing so. From a rails controller, you can call `notify_bugsnag`:
         
     | 
| 
      
 60 
     | 
    
         
            +
             
     | 
| 
      
 61 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 62 
     | 
    
         
            +
            notify_bugsnag(RuntimeError.new("Something broke"))
         
     | 
| 
      
 63 
     | 
    
         
            +
            ```
         
     | 
| 
      
 64 
     | 
    
         
            +
             
     | 
| 
      
 65 
     | 
    
         
            +
            You can also send additional meta-data with your exception:
         
     | 
| 
      
 66 
     | 
    
         
            +
             
     | 
| 
      
 67 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 68 
     | 
    
         
            +
            notify_bugsnag(RuntimeError.new("Something broke"), {
         
     | 
| 
      
 69 
     | 
    
         
            +
              :username => "bob-hoskins",
         
     | 
| 
      
 70 
     | 
    
         
            +
              :registered_user => true
         
     | 
| 
      
 71 
     | 
    
         
            +
            })
         
     | 
| 
      
 72 
     | 
    
         
            +
            ```
         
     | 
| 
      
 73 
     | 
    
         
            +
             
     | 
| 
      
 74 
     | 
    
         
            +
            Anywhere else in your ruby code, you can call `Bugsnag.notify`:
         
     | 
| 
      
 75 
     | 
    
         
            +
             
     | 
| 
      
 76 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 77 
     | 
    
         
            +
            Bugsnag.notify(RuntimeError.new("Something broke"));
         
     | 
| 
      
 78 
     | 
    
         
            +
            ```
         
     | 
| 
      
 79 
     | 
    
         
            +
             
     | 
| 
      
 80 
     | 
    
         
            +
             
     | 
| 
      
 81 
     | 
    
         
            +
            Configuration
         
     | 
| 
      
 82 
     | 
    
         
            +
            -------------
         
     | 
| 
      
 83 
     | 
    
         
            +
             
     | 
| 
      
 84 
     | 
    
         
            +
            To configure additional Bugsnag settings, use the block syntax and set any
         
     | 
| 
      
 85 
     | 
    
         
            +
            settings you need on the `config` block variable. For example:
         
     | 
| 
      
 86 
     | 
    
         
            +
             
     | 
| 
      
 87 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 88 
     | 
    
         
            +
            Bugsnag.configure do |config|
         
     | 
| 
      
 89 
     | 
    
         
            +
              config.api_key = "your-api-key-here"
         
     | 
| 
      
 90 
     | 
    
         
            +
              config.use_ssl = true
         
     | 
| 
      
 91 
     | 
    
         
            +
              config.notify_release_stages = ["production", "development"]
         
     | 
| 
      
 92 
     | 
    
         
            +
            end
         
     | 
| 
      
 93 
     | 
    
         
            +
            ```
         
     | 
| 
      
 94 
     | 
    
         
            +
             
     | 
| 
      
 95 
     | 
    
         
            +
            ###api_key
         
     | 
| 
      
 96 
     | 
    
         
            +
             
     | 
| 
      
 97 
     | 
    
         
            +
            Your Bugsnag API key (required).
         
     | 
| 
      
 98 
     | 
    
         
            +
             
     | 
| 
      
 99 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 100 
     | 
    
         
            +
            config.api_key = "your-api-key-here"
         
     | 
| 
      
 101 
     | 
    
         
            +
            ```
         
     | 
| 
      
 102 
     | 
    
         
            +
             
     | 
| 
      
 103 
     | 
    
         
            +
            ###release_stage
         
     | 
| 
      
 104 
     | 
    
         
            +
             
     | 
| 
      
 105 
     | 
    
         
            +
            If you would like to distinguish between errors that happen in different
         
     | 
| 
      
 106 
     | 
    
         
            +
            stages of the application release process (development, production, etc)
         
     | 
| 
      
 107 
     | 
    
         
            +
            you can set the `release_stage` that is reported to Bugsnag.
         
     | 
| 
      
 108 
     | 
    
         
            +
             
     | 
| 
      
 109 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 110 
     | 
    
         
            +
            config.release_stage = "development"
         
     | 
| 
      
 111 
     | 
    
         
            +
            ```
         
     | 
| 
      
 112 
     | 
    
         
            +
                
         
     | 
| 
      
 113 
     | 
    
         
            +
            In rails apps this value is automatically set from `RAILS_ENV`, and in rack
         
     | 
| 
      
 114 
     | 
    
         
            +
            apps it is automatically set to `RACK_ENV`. Otherwise the default is 
         
     | 
| 
      
 115 
     | 
    
         
            +
            "production".
         
     | 
| 
      
 116 
     | 
    
         
            +
             
     | 
| 
      
 117 
     | 
    
         
            +
            ###notify_release_stages
         
     | 
| 
      
 118 
     | 
    
         
            +
             
     | 
| 
      
 119 
     | 
    
         
            +
            By default, we will only notify Bugsnag of exceptions that happen when 
         
     | 
| 
      
 120 
     | 
    
         
            +
            your `release_stage` is set to be "production". If you would like to 
         
     | 
| 
      
 121 
     | 
    
         
            +
            change which release stages notify Bugsnag of exceptions you can
         
     | 
| 
      
 122 
     | 
    
         
            +
            set `notify_release_stages`:
         
     | 
| 
      
 123 
     | 
    
         
            +
                
         
     | 
| 
      
 124 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 125 
     | 
    
         
            +
            config.notify_release_stages = ["production", "development"]
         
     | 
| 
      
 126 
     | 
    
         
            +
            ```
         
     | 
| 
      
 127 
     | 
    
         
            +
             
     | 
| 
      
 128 
     | 
    
         
            +
            ###auto_notify
         
     | 
| 
      
 129 
     | 
    
         
            +
             
     | 
| 
      
 130 
     | 
    
         
            +
            By default, we will automatically notify Bugsnag of any fatal exceptions
         
     | 
| 
      
 131 
     | 
    
         
            +
            in your application. If you want to stop this from happening, you can set
         
     | 
| 
      
 132 
     | 
    
         
            +
            `auto_notify`:
         
     | 
| 
      
 133 
     | 
    
         
            +
                
         
     | 
| 
      
 134 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 135 
     | 
    
         
            +
            config.auto_notify = false
         
     | 
| 
      
 136 
     | 
    
         
            +
            ```
         
     | 
| 
      
 137 
     | 
    
         
            +
             
     | 
| 
      
 138 
     | 
    
         
            +
            ###use_ssl
         
     | 
| 
      
 139 
     | 
    
         
            +
             
     | 
| 
      
 140 
     | 
    
         
            +
            Enforces all communication with bugsnag.com be made via ssl.
         
     | 
| 
      
 141 
     | 
    
         
            +
             
     | 
| 
      
 142 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 143 
     | 
    
         
            +
            config.use_ssl = true
         
     | 
| 
      
 144 
     | 
    
         
            +
            ```
         
     | 
| 
      
 145 
     | 
    
         
            +
             
     | 
| 
      
 146 
     | 
    
         
            +
            By default, `use_ssl` is set to false.
         
     | 
| 
      
 147 
     | 
    
         
            +
             
     | 
| 
      
 148 
     | 
    
         
            +
            ###project_root
         
     | 
| 
      
 149 
     | 
    
         
            +
             
     | 
| 
      
 150 
     | 
    
         
            +
            We mark stacktrace lines as `inProject` if they come from files inside your
         
     | 
| 
      
 151 
     | 
    
         
            +
            `project_root`. In rails apps this value is automatically set to `RAILS_ROOT`,
         
     | 
| 
      
 152 
     | 
    
         
            +
            otherwise you should set it manually:
         
     | 
| 
      
 153 
     | 
    
         
            +
             
     | 
| 
      
 154 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 155 
     | 
    
         
            +
            config.project_root = "/var/www/myproject"
         
     | 
| 
      
 156 
     | 
    
         
            +
            ```
         
     | 
| 
      
 157 
     | 
    
         
            +
             
     | 
| 
      
 158 
     | 
    
         
            +
            ###app_version
         
     | 
| 
      
 159 
     | 
    
         
            +
             
     | 
| 
      
 160 
     | 
    
         
            +
            If you want to track which versions of your application each exception 
         
     | 
| 
      
 161 
     | 
    
         
            +
            happens in, you can set `app_version`. This is set to `nil` by default.
         
     | 
| 
      
 162 
     | 
    
         
            +
             
     | 
| 
      
 163 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 164 
     | 
    
         
            +
            config.app_version = "2.5.1"
         
     | 
| 
      
 165 
     | 
    
         
            +
            ```
         
     | 
| 
      
 166 
     | 
    
         
            +
             
     | 
| 
      
 167 
     | 
    
         
            +
            ###params_filters
         
     | 
| 
      
 168 
     | 
    
         
            +
             
     | 
| 
      
 169 
     | 
    
         
            +
            Sets the strings to filter out from the `params` hashes before sending
         
     | 
| 
      
 170 
     | 
    
         
            +
            them to Bugsnag. Use this if you want to ensure you don't send 
         
     | 
| 
      
 171 
     | 
    
         
            +
            sensitive data such as passwords, and credit card numbers to our 
         
     | 
| 
      
 172 
     | 
    
         
            +
            servers. Any keys which contain these strings will be filtered.
         
     | 
| 
      
 173 
     | 
    
         
            +
             
     | 
| 
      
 174 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 175 
     | 
    
         
            +
            config.params_filters << "credit_card_number"
         
     | 
| 
      
 176 
     | 
    
         
            +
            ```
         
     | 
| 
      
 177 
     | 
    
         
            +
             
     | 
| 
      
 178 
     | 
    
         
            +
            By default, `params_filters` is set to `["password", "password_confirmation"]`
         
     | 
| 
      
 179 
     | 
    
         
            +
             
     | 
| 
      
 180 
     | 
    
         
            +
            ###ignore_classes
         
     | 
| 
      
 181 
     | 
    
         
            +
             
     | 
| 
      
 182 
     | 
    
         
            +
            Sets for which exception classes we should not send exceptions to bugsnag.com.
         
     | 
| 
      
 183 
     | 
    
         
            +
             
     | 
| 
      
 184 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 185 
     | 
    
         
            +
            config.ignore_classes << "ActiveRecord::StatementInvalid"
         
     | 
| 
      
 186 
     | 
    
         
            +
            ```
         
     | 
| 
      
 187 
     | 
    
         
            +
             
     | 
| 
      
 188 
     | 
    
         
            +
            By default, `ignore_classes` contains the following classes:
         
     | 
| 
      
 189 
     | 
    
         
            +
             
     | 
| 
      
 190 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 191 
     | 
    
         
            +
            [
         
     | 
| 
      
 192 
     | 
    
         
            +
              "ActiveRecord::RecordNotFound",
         
     | 
| 
      
 193 
     | 
    
         
            +
              "ActionController::RoutingError",
         
     | 
| 
      
 194 
     | 
    
         
            +
              "ActionController::InvalidAuthenticityToken",
         
     | 
| 
      
 195 
     | 
    
         
            +
              "CGI::Session::CookieStore::TamperedWithCookie",
         
     | 
| 
      
 196 
     | 
    
         
            +
              "ActionController::UnknownAction",
         
     | 
| 
      
 197 
     | 
    
         
            +
              "AbstractController::ActionNotFound"
         
     | 
| 
      
 198 
     | 
    
         
            +
            ]
         
     | 
| 
      
 199 
     | 
    
         
            +
            ```
         
     | 
| 
      
 200 
     | 
    
         
            +
             
     | 
| 
      
 201 
     | 
    
         
            +
             
     | 
| 
      
 202 
     | 
    
         
            +
            Reporting Bugs or Feature Requests
         
     | 
| 
      
 203 
     | 
    
         
            +
            ----------------------------------
         
     | 
| 
      
 204 
     | 
    
         
            +
             
     | 
| 
      
 205 
     | 
    
         
            +
            Please report any bugs or feature requests on the github issues page for this
         
     | 
| 
      
 206 
     | 
    
         
            +
            project here:
         
     | 
| 
      
 207 
     | 
    
         
            +
             
     | 
| 
      
 208 
     | 
    
         
            +
            <https://github.com/bugsnag/bugsnag-ruby/issues>
         
     | 
| 
      
 209 
     | 
    
         
            +
             
     | 
| 
      
 210 
     | 
    
         
            +
             
     | 
| 
      
 211 
     | 
    
         
            +
            Contributing
         
     | 
| 
      
 212 
     | 
    
         
            +
            ------------
         
     | 
| 
      
 213 
     | 
    
         
            +
             
         
     | 
| 
      
 214 
     | 
    
         
            +
            -   Check out the latest master to make sure the feature hasn't been 
         
     | 
| 
      
 215 
     | 
    
         
            +
                implemented or the bug hasn't been fixed yet
         
     | 
| 
      
 216 
     | 
    
         
            +
            -   Check out the issue tracker to make sure someone already hasn't requested
         
     | 
| 
      
 217 
     | 
    
         
            +
                it and/or contributed it
         
     | 
| 
      
 218 
     | 
    
         
            +
            -   Fork the project
         
     | 
| 
      
 219 
     | 
    
         
            +
            -   Start a feature/bugfix branch
         
     | 
| 
      
 220 
     | 
    
         
            +
            -   Commit and push until you are happy with your contribution
         
     | 
| 
      
 221 
     | 
    
         
            +
            -   Thanks!
         
     | 
| 
      
 222 
     | 
    
         
            +
             
     | 
| 
      
 223 
     | 
    
         
            +
             
     | 
| 
      
 224 
     | 
    
         
            +
            License
         
     | 
| 
      
 225 
     | 
    
         
            +
            -------
         
     | 
| 
      
 226 
     | 
    
         
            +
             
     | 
| 
      
 227 
     | 
    
         
            +
            The Bugsnag ruby notifier is released under the
         
     | 
| 
      
 228 
     | 
    
         
            +
            Apache License, Version 2.0. Read the full license here:
         
     | 
| 
      
 229 
     | 
    
         
            +
             
     | 
| 
      
 230 
     | 
    
         
            +
            <http://www.apache.org/licenses/LICENSE-2.0>
         
     | 
    
        data/VERSION
    CHANGED
    
    | 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            1.0 
     | 
| 
      
 1 
     | 
    
         
            +
            1.1.0
         
     | 
    
        data/bugsnag.gemspec
    CHANGED
    
    | 
         @@ -5,23 +5,23 @@ 
     | 
|
| 
       5 
5 
     | 
    
         | 
| 
       6 
6 
     | 
    
         
             
            Gem::Specification.new do |s|
         
     | 
| 
       7 
7 
     | 
    
         
             
              s.name = "bugsnag"
         
     | 
| 
       8 
     | 
    
         
            -
              s.version = "1.0 
     | 
| 
      
 8 
     | 
    
         
            +
              s.version = "1.1.0"
         
     | 
| 
       9 
9 
     | 
    
         | 
| 
       10 
10 
     | 
    
         
             
              s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
         
     | 
| 
       11 
11 
     | 
    
         
             
              s.authors = ["James Smith"]
         
     | 
| 
       12 
     | 
    
         
            -
              s.date = "2012- 
     | 
| 
      
 12 
     | 
    
         
            +
              s.date = "2012-06-18"
         
     | 
| 
       13 
13 
     | 
    
         
             
              s.description = "Ruby notifier for bugsnag.com"
         
     | 
| 
       14 
14 
     | 
    
         
             
              s.email = "james@bugsnag.com"
         
     | 
| 
       15 
15 
     | 
    
         
             
              s.extra_rdoc_files = [
         
     | 
| 
       16 
16 
     | 
    
         
             
                "LICENSE.txt",
         
     | 
| 
       17 
     | 
    
         
            -
                "README. 
     | 
| 
      
 17 
     | 
    
         
            +
                "README.md"
         
     | 
| 
       18 
18 
     | 
    
         
             
              ]
         
     | 
| 
       19 
19 
     | 
    
         
             
              s.files = [
         
     | 
| 
       20 
20 
     | 
    
         
             
                ".document",
         
     | 
| 
       21 
21 
     | 
    
         
             
                "Gemfile",
         
     | 
| 
       22 
22 
     | 
    
         
             
                "Gemfile.lock",
         
     | 
| 
       23 
23 
     | 
    
         
             
                "LICENSE.txt",
         
     | 
| 
       24 
     | 
    
         
            -
                "README. 
     | 
| 
      
 24 
     | 
    
         
            +
                "README.md",
         
     | 
| 
       25 
25 
     | 
    
         
             
                "Rakefile",
         
     | 
| 
       26 
26 
     | 
    
         
             
                "VERSION",
         
     | 
| 
       27 
27 
     | 
    
         
             
                "bugsnag.gemspec",
         
     | 
| 
         @@ -35,8 +35,8 @@ Gem::Specification.new do |s| 
     | 
|
| 
       35 
35 
     | 
    
         
             
                "lib/bugsnag/rails/action_controller_rescue.rb",
         
     | 
| 
       36 
36 
     | 
    
         
             
                "lib/bugsnag/rails/controller_methods.rb",
         
     | 
| 
       37 
37 
     | 
    
         
             
                "lib/bugsnag/railtie.rb",
         
     | 
| 
       38 
     | 
    
         
            -
                "lib/bugsnag/resque.rb",
         
     | 
| 
       39 
38 
     | 
    
         
             
                "lib/bugsnag/version.rb",
         
     | 
| 
      
 39 
     | 
    
         
            +
                "lib/resque/failure/bugsnag.rb",
         
     | 
| 
       40 
40 
     | 
    
         
             
                "rails/init.rb",
         
     | 
| 
       41 
41 
     | 
    
         
             
                "test/helper.rb",
         
     | 
| 
       42 
42 
     | 
    
         
             
                "test/test_bugsnag.rb"
         
     | 
    
        data/lib/bugsnag.rb
    CHANGED
    
    | 
         @@ -7,7 +7,8 @@ require "bugsnag/helpers" 
     | 
|
| 
       7 
7 
     | 
    
         | 
| 
       8 
8 
     | 
    
         
             
            require "bugsnag/rack"
         
     | 
| 
       9 
9 
     | 
    
         
             
            require "bugsnag/railtie" if defined?(Rails::Railtie)
         
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
            require "resque/failure/bugsnag" if defined?(Resque)
         
     | 
| 
       11 
12 
     | 
    
         | 
| 
       12 
13 
     | 
    
         
             
            module Bugsnag
         
     | 
| 
       13 
14 
     | 
    
         
             
              LOG_PREFIX = "** [Bugsnag] "
         
     | 
| 
         @@ -42,7 +43,7 @@ module Bugsnag 
     | 
|
| 
       42 
43 
     | 
    
         
             
                # rescuers, unless auto notification is disabled, or we should ignore this
         
     | 
| 
       43 
44 
     | 
    
         
             
                # error class
         
     | 
| 
       44 
45 
     | 
    
         
             
                def auto_notify(exception, session_data={})
         
     | 
| 
       45 
     | 
    
         
            -
                  notify_or_ignore(exception, session_data)  
     | 
| 
      
 46 
     | 
    
         
            +
                  notify_or_ignore(exception, session_data) if configuration.auto_notify
         
     | 
| 
       46 
47 
     | 
    
         
             
                end
         
     | 
| 
       47 
48 
     | 
    
         | 
| 
       48 
49 
     | 
    
         
             
                # Log wrapper
         
     | 
| 
         @@ -1,9 +1,13 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module Bugsnag
         
     | 
| 
       2 
2 
     | 
    
         
             
              class Configuration
         
     | 
| 
      
 3 
     | 
    
         
            +
                # TODO:JS enforce notify_release_stages
         
     | 
| 
       3 
4 
     | 
    
         
             
                OPTIONS = [
         
     | 
| 
       4 
     | 
    
         
            -
                  :api_key, :release_stage, : 
     | 
| 
       5 
     | 
    
         
            -
                  : 
     | 
| 
       6 
     | 
    
         
            -
                  :params_filters, : 
     | 
| 
      
 5 
     | 
    
         
            +
                  :api_key, :release_stage, :notify_release_stages, :auto_notify,
         
     | 
| 
      
 6 
     | 
    
         
            +
                  :use_ssl, :project_root, :app_version,
         
     | 
| 
      
 7 
     | 
    
         
            +
                  :params_filters, :ignore_classes,
         
     | 
| 
      
 8 
     | 
    
         
            +
                  
         
     | 
| 
      
 9 
     | 
    
         
            +
                  :stacktrace_filters,
         
     | 
| 
      
 10 
     | 
    
         
            +
                  :framework, :endpoint, :logger,
         
     | 
| 
       7 
11 
     | 
    
         
             
                  :delay_with_resque
         
     | 
| 
       8 
12 
     | 
    
         
             
                ]
         
     | 
| 
       9 
13 
     | 
    
         
             
                OPTIONS.each {|o| attr_accessor o }
         
     | 
| 
         @@ -43,6 +47,9 @@ module Bugsnag 
     | 
|
| 
       43 
47 
     | 
    
         
             
                  @params_filters = DEFAULT_PARAMS_FILTERS.dup
         
     | 
| 
       44 
48 
     | 
    
         
             
                  @stacktrace_filters = DEFAULT_STACKTRACE_FILTERS.dup
         
     | 
| 
       45 
49 
     | 
    
         
             
                  @ignore_classes = DEFAULT_IGNORE_CLASSES.dup
         
     | 
| 
      
 50 
     | 
    
         
            +
                  @auto_notify = true
         
     | 
| 
      
 51 
     | 
    
         
            +
                  @release_stage = "production"
         
     | 
| 
      
 52 
     | 
    
         
            +
                  @notify_release_stages = ["production"]
         
     | 
| 
       46 
53 
     | 
    
         
             
                end
         
     | 
| 
       47 
54 
     | 
    
         | 
| 
       48 
55 
     | 
    
         
             
                def to_hash
         
     | 
    
        data/lib/bugsnag/notification.rb
    CHANGED
    
    | 
         @@ -9,22 +9,22 @@ module Bugsnag 
     | 
|
| 
       9 
9 
     | 
    
         
             
                NOTIFIER_VERSION = Bugsnag::VERSION
         
     | 
| 
       10 
10 
     | 
    
         
             
                NOTIFIER_URL = "http://www.bugsnag.com"
         
     | 
| 
       11 
11 
     | 
    
         | 
| 
       12 
     | 
    
         
            -
                DEFAULT_ENDPOINT = " 
     | 
| 
      
 12 
     | 
    
         
            +
                DEFAULT_ENDPOINT = "notify.bugsnag.com"
         
     | 
| 
       13 
13 
     | 
    
         | 
| 
       14 
14 
     | 
    
         
             
                # HTTParty settings
         
     | 
| 
       15 
15 
     | 
    
         
             
                headers  "Content-Type" => "application/json"
         
     | 
| 
       16 
16 
     | 
    
         
             
                default_timeout 5
         
     | 
| 
       17 
17 
     | 
    
         | 
| 
       18 
18 
     | 
    
         
             
                # Basic notification attributes
         
     | 
| 
       19 
     | 
    
         
            -
                attr_accessor : 
     | 
| 
      
 19 
     | 
    
         
            +
                attr_accessor :exceptions
         
     | 
| 
       20 
20 
     | 
    
         | 
| 
       21 
21 
     | 
    
         
             
                # Attributes from session
         
     | 
| 
       22 
22 
     | 
    
         
             
                attr_accessor :user_id, :context, :meta_data
         
     | 
| 
       23 
23 
     | 
    
         | 
| 
       24 
24 
     | 
    
         
             
                # Attributes from configuration
         
     | 
| 
       25 
25 
     | 
    
         
             
                attr_accessor :api_key, :params_filters, :stacktrace_filters, 
         
     | 
| 
       26 
     | 
    
         
            -
                              :ignore_classes, :endpoint, :app_version, :release_stage, 
     | 
| 
       27 
     | 
    
         
            -
                              :project_root, :use_ssl
         
     | 
| 
      
 26 
     | 
    
         
            +
                              :ignore_classes, :endpoint, :app_version, :release_stage,
         
     | 
| 
      
 27 
     | 
    
         
            +
                              :notify_release_stages, :project_root, :use_ssl
         
     | 
| 
       28 
28 
     | 
    
         | 
| 
       29 
29 
     | 
    
         | 
| 
       30 
30 
     | 
    
         
             
                def self.deliver_exception_payload(endpoint, payload_string)
         
     | 
| 
         @@ -36,19 +36,31 @@ module Bugsnag 
     | 
|
| 
       36 
36 
     | 
    
         
             
                end
         
     | 
| 
       37 
37 
     | 
    
         | 
| 
       38 
38 
     | 
    
         
             
                def initialize(exception, opts={})
         
     | 
| 
       39 
     | 
    
         
            -
                  self. 
     | 
| 
      
 39 
     | 
    
         
            +
                  self.exceptions = []
         
     | 
| 
      
 40 
     | 
    
         
            +
                  ex = exception
         
     | 
| 
      
 41 
     | 
    
         
            +
                  while ex != nil
         
     | 
| 
      
 42 
     | 
    
         
            +
                    self.exceptions << ex
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
                    if ex.respond_to?(:continued_exception) && ex.continued_exception
         
     | 
| 
      
 45 
     | 
    
         
            +
                      ex = ex.continued_exception
         
     | 
| 
      
 46 
     | 
    
         
            +
                    elsif ex.respond_to?(:original_exception) && ex.original_exception
         
     | 
| 
      
 47 
     | 
    
         
            +
                      ex = ex.original_exception
         
     | 
| 
      
 48 
     | 
    
         
            +
                    else
         
     | 
| 
      
 49 
     | 
    
         
            +
                      ex = nil
         
     | 
| 
      
 50 
     | 
    
         
            +
                    end
         
     | 
| 
      
 51 
     | 
    
         
            +
                  end
         
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
       40 
53 
     | 
    
         
             
                  opts.reject! {|k,v| v.nil?}.each do |k,v|
         
     | 
| 
       41 
54 
     | 
    
         
             
                    self.send("#{k}=", v) if self.respond_to?("#{k}=")
         
     | 
| 
       42 
55 
     | 
    
         
             
                  end
         
     | 
| 
       43 
56 
     | 
    
         
             
                end
         
     | 
| 
       44 
57 
     | 
    
         | 
| 
       45 
58 
     | 
    
         
             
                def deliver
         
     | 
| 
       46 
     | 
    
         
            -
                   
     | 
| 
       47 
     | 
    
         
            -
                   
     | 
| 
       48 
     | 
    
         
            -
             
     | 
| 
       49 
     | 
    
         
            -
                  end
         
     | 
| 
      
 59 
     | 
    
         
            +
                  return unless self.notify_release_stages.include?(self.release_stage)
         
     | 
| 
      
 60 
     | 
    
         
            +
                  
         
     | 
| 
      
 61 
     | 
    
         
            +
                  endpoint = (self.use_ssl ? "https://" : "http://") + (self.endpoint || DEFAULT_ENDPOINT)
         
     | 
| 
       50 
62 
     | 
    
         | 
| 
       51 
     | 
    
         
            -
                  Bugsnag.log("Notifying #{ 
     | 
| 
      
 63 
     | 
    
         
            +
                  Bugsnag.log("Notifying #{endpoint} of exception")
         
     | 
| 
       52 
64 
     | 
    
         | 
| 
       53 
65 
     | 
    
         
             
                  payload = {
         
     | 
| 
       54 
66 
     | 
    
         
             
                    :apiKey => self.api_key,
         
     | 
| 
         @@ -58,16 +70,16 @@ module Bugsnag 
     | 
|
| 
       58 
70 
     | 
    
         
             
                      :appVersion => self.app_version,
         
     | 
| 
       59 
71 
     | 
    
         
             
                      :releaseStage => self.release_stage,
         
     | 
| 
       60 
72 
     | 
    
         
             
                      :context => self.context,
         
     | 
| 
       61 
     | 
    
         
            -
                      :exceptions =>  
     | 
| 
      
 73 
     | 
    
         
            +
                      :exceptions => exception_list,
         
     | 
| 
       62 
74 
     | 
    
         
             
                      :metaData => self.meta_data
         
     | 
| 
       63 
75 
     | 
    
         
             
                    }.reject {|k,v| v.nil? }]
         
     | 
| 
       64 
76 
     | 
    
         
             
                  }
         
     | 
| 
       65 
77 
     | 
    
         | 
| 
       66 
     | 
    
         
            -
                  self.class.deliver_exception_payload( 
     | 
| 
      
 78 
     | 
    
         
            +
                  self.class.deliver_exception_payload(endpoint, MultiJson.encode(payload))
         
     | 
| 
       67 
79 
     | 
    
         
             
                end
         
     | 
| 
       68 
80 
     | 
    
         | 
| 
       69 
81 
     | 
    
         
             
                def ignore?
         
     | 
| 
       70 
     | 
    
         
            -
                  self.ignore_classes.include?(error_class(self. 
     | 
| 
      
 82 
     | 
    
         
            +
                  self.ignore_classes.include?(error_class(self.exceptions.last))
         
     | 
| 
       71 
83 
     | 
    
         
             
                end
         
     | 
| 
       72 
84 
     | 
    
         | 
| 
       73 
85 
     | 
    
         | 
| 
         @@ -84,15 +96,30 @@ module Bugsnag 
     | 
|
| 
       84 
96 
     | 
    
         
             
                  @notifier
         
     | 
| 
       85 
97 
     | 
    
         
             
                end
         
     | 
| 
       86 
98 
     | 
    
         | 
| 
       87 
     | 
    
         
            -
                def  
     | 
| 
       88 
     | 
    
         
            -
                   
     | 
| 
       89 
     | 
    
         
            -
             
     | 
| 
      
 99 
     | 
    
         
            +
                def exception_list
         
     | 
| 
      
 100 
     | 
    
         
            +
                  self.exceptions.map do |exception|
         
     | 
| 
      
 101 
     | 
    
         
            +
                    {
         
     | 
| 
      
 102 
     | 
    
         
            +
                      :errorClass => error_class(exception),
         
     | 
| 
      
 103 
     | 
    
         
            +
                      :message => exception.message,
         
     | 
| 
      
 104 
     | 
    
         
            +
                      :stacktrace => stacktrace(exception)
         
     | 
| 
      
 105 
     | 
    
         
            +
                    }
         
     | 
| 
      
 106 
     | 
    
         
            +
                  end
         
     | 
| 
      
 107 
     | 
    
         
            +
                end
         
     | 
| 
      
 108 
     | 
    
         
            +
                
         
     | 
| 
      
 109 
     | 
    
         
            +
                def error_class(exception)
         
     | 
| 
      
 110 
     | 
    
         
            +
                  # The "Class" check is for some strange exceptions like Timeout::Error 
         
     | 
| 
      
 111 
     | 
    
         
            +
                  # which throw the error class instead of an instance
         
     | 
| 
      
 112 
     | 
    
         
            +
                  (exception.is_a? Class) ? exception.name : exception.class.name
         
     | 
| 
      
 113 
     | 
    
         
            +
                end
         
     | 
| 
      
 114 
     | 
    
         
            +
             
     | 
| 
      
 115 
     | 
    
         
            +
                def stacktrace(exception)
         
     | 
| 
      
 116 
     | 
    
         
            +
                  (exception.backtrace || caller).map do |trace|
         
     | 
| 
       90 
117 
     | 
    
         
             
                    method = nil
         
     | 
| 
       91 
118 
     | 
    
         
             
                    file, line_str, method_str = trace.split(":")
         
     | 
| 
       92 
119 
     | 
    
         | 
| 
       93 
120 
     | 
    
         
             
                    # Generate the stacktrace line hash
         
     | 
| 
       94 
121 
     | 
    
         
             
                    trace_hash = {}
         
     | 
| 
       95 
     | 
    
         
            -
                    trace_hash[:inProject] = true if self.project_root && file.match(/^#{self.project_root}/)
         
     | 
| 
      
 122 
     | 
    
         
            +
                    trace_hash[:inProject] = true if self.project_root && file.match(/^#{self.project_root}/) && !file.match(/vendor\//)
         
     | 
| 
       96 
123 
     | 
    
         
             
                    trace_hash[:file] = self.stacktrace_filters.inject(file) {|file, proc| proc.call(file) }
         
     | 
| 
       97 
124 
     | 
    
         
             
                    trace_hash[:lineNumber] = line_str.to_i
         
     | 
| 
       98 
125 
     | 
    
         | 
| 
         @@ -110,19 +137,5 @@ module Bugsnag 
     | 
|
| 
       110 
137 
     | 
    
         
             
                    end
         
     | 
| 
       111 
138 
     | 
    
         
             
                  end.compact
         
     | 
| 
       112 
139 
     | 
    
         
             
                end
         
     | 
| 
       113 
     | 
    
         
            -
             
     | 
| 
       114 
     | 
    
         
            -
                def exception_hash
         
     | 
| 
       115 
     | 
    
         
            -
                  {
         
     | 
| 
       116 
     | 
    
         
            -
                    :errorClass => error_class(self.exception),
         
     | 
| 
       117 
     | 
    
         
            -
                    :message => self.exception.message,
         
     | 
| 
       118 
     | 
    
         
            -
                    :stacktrace => stacktrace_hash
         
     | 
| 
       119 
     | 
    
         
            -
                  }
         
     | 
| 
       120 
     | 
    
         
            -
                end
         
     | 
| 
       121 
     | 
    
         
            -
                
         
     | 
| 
       122 
     | 
    
         
            -
                def error_class(exception)
         
     | 
| 
       123 
     | 
    
         
            -
                  # The "Class" check is for some strange exceptions like Timeout::Error 
         
     | 
| 
       124 
     | 
    
         
            -
                  # which throw the error class instead of an instance
         
     | 
| 
       125 
     | 
    
         
            -
                  (exception.is_a? Class) ? exception.name : exception.class.name
         
     | 
| 
       126 
     | 
    
         
            -
                end
         
     | 
| 
       127 
140 
     | 
    
         
             
              end
         
     | 
| 
       128 
141 
     | 
    
         
             
            end
         
     | 
    
        data/lib/bugsnag/railtie.rb
    CHANGED
    
    | 
         @@ -15,10 +15,11 @@ module Bugsnag 
     | 
|
| 
       15 
15 
     | 
    
         | 
| 
       16 
16 
     | 
    
         
             
                config.after_initialize do
         
     | 
| 
       17 
17 
     | 
    
         
             
                  Bugsnag.configure do |config|
         
     | 
| 
       18 
     | 
    
         
            -
                    config. 
     | 
| 
       19 
     | 
    
         
            -
                    config. 
     | 
| 
       20 
     | 
    
         
            -
                    config.project_root ||= Rails.root
         
     | 
| 
      
 18 
     | 
    
         
            +
                    config.release_stage = Rails.env
         
     | 
| 
      
 19 
     | 
    
         
            +
                    config.project_root = Rails.root
         
     | 
| 
       21 
20 
     | 
    
         
             
                    config.framework = "Rails: #{::Rails::VERSION::STRING}"
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
                    config.logger ||= Rails.logger
         
     | 
| 
       22 
23 
     | 
    
         
             
                  end
         
     | 
| 
       23 
24 
     | 
    
         | 
| 
       24 
25 
     | 
    
         
             
                  if defined?(::ActionController::Base)
         
     | 
| 
         @@ -0,0 +1,47 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # Resque support
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            # How to use:
         
     | 
| 
      
 4 
     | 
    
         
            +
            #   Resque::Failure::Multiple.classes = [Resque::Failure::Redis, Resque::Failure::Bugsnag]
         
     | 
| 
      
 5 
     | 
    
         
            +
            #   Resque::Failure.backend = Resque::Failure::Multiple
         
     | 
| 
      
 6 
     | 
    
         
            +
            #
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            begin
         
     | 
| 
      
 9 
     | 
    
         
            +
              require "bugsnag"
         
     | 
| 
      
 10 
     | 
    
         
            +
            rescue LoadError
         
     | 
| 
      
 11 
     | 
    
         
            +
              raise "Can't find 'bugsnag' gem. Please add it to your Gemfile or install it."
         
     | 
| 
      
 12 
     | 
    
         
            +
            end
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
            require "resque/failure/base"
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
            module Resque
         
     | 
| 
      
 17 
     | 
    
         
            +
              module Failure
         
     | 
| 
      
 18 
     | 
    
         
            +
                class Bugsnag < Base
         
     | 
| 
      
 19 
     | 
    
         
            +
                  def self.configure(&block)
         
     | 
| 
      
 20 
     | 
    
         
            +
                    unless ::Resque::Failure.backend < ::Resque::Failure::Multiple
         
     | 
| 
      
 21 
     | 
    
         
            +
                      original_backend = ::Resque::Failure.backend
         
     | 
| 
      
 22 
     | 
    
         
            +
                      ::Resque::Failure.backend = ::Resque::Failure::Multiple
         
     | 
| 
      
 23 
     | 
    
         
            +
                      ::Resque::Failure.backend.classes ||= []
         
     | 
| 
      
 24 
     | 
    
         
            +
                      ::Resque::Failure.backend.classes << original_backend
         
     | 
| 
      
 25 
     | 
    
         
            +
                    end
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
                    ::Resque::Failure.backend.classes << self
         
     | 
| 
      
 28 
     | 
    
         
            +
                    ::Bugsnag.configure(&block)
         
     | 
| 
      
 29 
     | 
    
         
            +
                  end
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
                  def save
         
     | 
| 
      
 32 
     | 
    
         
            +
                    ::Bugsnag.auto_notify(exception, bugsnag_job_data)
         
     | 
| 
      
 33 
     | 
    
         
            +
                  end
         
     | 
| 
      
 34 
     | 
    
         
            +
                
         
     | 
| 
      
 35 
     | 
    
         
            +
                  private
         
     | 
| 
      
 36 
     | 
    
         
            +
                  def bugsnag_job_data
         
     | 
| 
      
 37 
     | 
    
         
            +
                    {
         
     | 
| 
      
 38 
     | 
    
         
            +
                      :user_id => nil, # TODO: How to infer a user id in resque?
         
     | 
| 
      
 39 
     | 
    
         
            +
                      :context => "resque: #{queue}",
         
     | 
| 
      
 40 
     | 
    
         
            +
                      :meta_data => {
         
     | 
| 
      
 41 
     | 
    
         
            +
                        :payload => payload
         
     | 
| 
      
 42 
     | 
    
         
            +
                      }
         
     | 
| 
      
 43 
     | 
    
         
            +
                    }
         
     | 
| 
      
 44 
     | 
    
         
            +
                  end
         
     | 
| 
      
 45 
     | 
    
         
            +
                end
         
     | 
| 
      
 46 
     | 
    
         
            +
              end
         
     | 
| 
      
 47 
     | 
    
         
            +
            end
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,13 +1,13 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification 
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: bugsnag
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version 
         
     | 
| 
       4 
     | 
    
         
            -
              hash:  
     | 
| 
      
 4 
     | 
    
         
            +
              hash: 19
         
     | 
| 
       5 
5 
     | 
    
         
             
              prerelease: 
         
     | 
| 
       6 
6 
     | 
    
         
             
              segments: 
         
     | 
| 
       7 
7 
     | 
    
         
             
              - 1
         
     | 
| 
      
 8 
     | 
    
         
            +
              - 1
         
     | 
| 
       8 
9 
     | 
    
         
             
              - 0
         
     | 
| 
       9 
     | 
    
         
            -
               
     | 
| 
       10 
     | 
    
         
            -
              version: 1.0.10
         
     | 
| 
      
 10 
     | 
    
         
            +
              version: 1.1.0
         
     | 
| 
       11 
11 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       12 
12 
     | 
    
         
             
            authors: 
         
     | 
| 
       13 
13 
     | 
    
         
             
            - James Smith
         
     | 
| 
         @@ -15,9 +15,10 @@ autorequire: 
     | 
|
| 
       15 
15 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       16 
16 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       17 
17 
     | 
    
         | 
| 
       18 
     | 
    
         
            -
            date: 2012- 
     | 
| 
      
 18 
     | 
    
         
            +
            date: 2012-06-18 00:00:00 Z
         
     | 
| 
       19 
19 
     | 
    
         
             
            dependencies: 
         
     | 
| 
       20 
20 
     | 
    
         
             
            - !ruby/object:Gem::Dependency 
         
     | 
| 
      
 21 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
       21 
22 
     | 
    
         
             
              version_requirements: &id001 !ruby/object:Gem::Requirement 
         
     | 
| 
       22 
23 
     | 
    
         
             
                none: false
         
     | 
| 
       23 
24 
     | 
    
         
             
                requirements: 
         
     | 
| 
         @@ -29,9 +30,9 @@ dependencies: 
     | 
|
| 
       29 
30 
     | 
    
         
             
                    version: "0"
         
     | 
| 
       30 
31 
     | 
    
         
             
              requirement: *id001
         
     | 
| 
       31 
32 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       32 
     | 
    
         
            -
              prerelease: false
         
     | 
| 
       33 
33 
     | 
    
         
             
              name: multi_json
         
     | 
| 
       34 
34 
     | 
    
         
             
            - !ruby/object:Gem::Dependency 
         
     | 
| 
      
 35 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
       35 
36 
     | 
    
         
             
              version_requirements: &id002 !ruby/object:Gem::Requirement 
         
     | 
| 
       36 
37 
     | 
    
         
             
                none: false
         
     | 
| 
       37 
38 
     | 
    
         
             
                requirements: 
         
     | 
| 
         @@ -43,9 +44,9 @@ dependencies: 
     | 
|
| 
       43 
44 
     | 
    
         
             
                    version: "0"
         
     | 
| 
       44 
45 
     | 
    
         
             
              requirement: *id002
         
     | 
| 
       45 
46 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       46 
     | 
    
         
            -
              prerelease: false
         
     | 
| 
       47 
47 
     | 
    
         
             
              name: httparty
         
     | 
| 
       48 
48 
     | 
    
         
             
            - !ruby/object:Gem::Dependency 
         
     | 
| 
      
 49 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
       49 
50 
     | 
    
         
             
              version_requirements: &id003 !ruby/object:Gem::Requirement 
         
     | 
| 
       50 
51 
     | 
    
         
             
                none: false
         
     | 
| 
       51 
52 
     | 
    
         
             
                requirements: 
         
     | 
| 
         @@ -57,9 +58,9 @@ dependencies: 
     | 
|
| 
       57 
58 
     | 
    
         
             
                    version: "0"
         
     | 
| 
       58 
59 
     | 
    
         
             
              requirement: *id003
         
     | 
| 
       59 
60 
     | 
    
         
             
              type: :development
         
     | 
| 
       60 
     | 
    
         
            -
              prerelease: false
         
     | 
| 
       61 
61 
     | 
    
         
             
              name: shoulda
         
     | 
| 
       62 
62 
     | 
    
         
             
            - !ruby/object:Gem::Dependency 
         
     | 
| 
      
 63 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
       63 
64 
     | 
    
         
             
              version_requirements: &id004 !ruby/object:Gem::Requirement 
         
     | 
| 
       64 
65 
     | 
    
         
             
                none: false
         
     | 
| 
       65 
66 
     | 
    
         
             
                requirements: 
         
     | 
| 
         @@ -73,9 +74,9 @@ dependencies: 
     | 
|
| 
       73 
74 
     | 
    
         
             
                    version: 1.0.0
         
     | 
| 
       74 
75 
     | 
    
         
             
              requirement: *id004
         
     | 
| 
       75 
76 
     | 
    
         
             
              type: :development
         
     | 
| 
       76 
     | 
    
         
            -
              prerelease: false
         
     | 
| 
       77 
77 
     | 
    
         
             
              name: bundler
         
     | 
| 
       78 
78 
     | 
    
         
             
            - !ruby/object:Gem::Dependency 
         
     | 
| 
      
 79 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
       79 
80 
     | 
    
         
             
              version_requirements: &id005 !ruby/object:Gem::Requirement 
         
     | 
| 
       80 
81 
     | 
    
         
             
                none: false
         
     | 
| 
       81 
82 
     | 
    
         
             
                requirements: 
         
     | 
| 
         @@ -89,9 +90,9 @@ dependencies: 
     | 
|
| 
       89 
90 
     | 
    
         
             
                    version: 1.6.4
         
     | 
| 
       90 
91 
     | 
    
         
             
              requirement: *id005
         
     | 
| 
       91 
92 
     | 
    
         
             
              type: :development
         
     | 
| 
       92 
     | 
    
         
            -
              prerelease: false
         
     | 
| 
       93 
93 
     | 
    
         
             
              name: jeweler
         
     | 
| 
       94 
94 
     | 
    
         
             
            - !ruby/object:Gem::Dependency 
         
     | 
| 
      
 95 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
       95 
96 
     | 
    
         
             
              version_requirements: &id006 !ruby/object:Gem::Requirement 
         
     | 
| 
       96 
97 
     | 
    
         
             
                none: false
         
     | 
| 
       97 
98 
     | 
    
         
             
                requirements: 
         
     | 
| 
         @@ -103,7 +104,6 @@ dependencies: 
     | 
|
| 
       103 
104 
     | 
    
         
             
                    version: "0"
         
     | 
| 
       104 
105 
     | 
    
         
             
              requirement: *id006
         
     | 
| 
       105 
106 
     | 
    
         
             
              type: :development
         
     | 
| 
       106 
     | 
    
         
            -
              prerelease: false
         
     | 
| 
       107 
107 
     | 
    
         
             
              name: rcov
         
     | 
| 
       108 
108 
     | 
    
         
             
            description: Ruby notifier for bugsnag.com
         
     | 
| 
       109 
109 
     | 
    
         
             
            email: james@bugsnag.com
         
     | 
| 
         @@ -113,13 +113,13 @@ extensions: [] 
     | 
|
| 
       113 
113 
     | 
    
         | 
| 
       114 
114 
     | 
    
         
             
            extra_rdoc_files: 
         
     | 
| 
       115 
115 
     | 
    
         
             
            - LICENSE.txt
         
     | 
| 
       116 
     | 
    
         
            -
            - README. 
     | 
| 
      
 116 
     | 
    
         
            +
            - README.md
         
     | 
| 
       117 
117 
     | 
    
         
             
            files: 
         
     | 
| 
       118 
118 
     | 
    
         
             
            - .document
         
     | 
| 
       119 
119 
     | 
    
         
             
            - Gemfile
         
     | 
| 
       120 
120 
     | 
    
         
             
            - Gemfile.lock
         
     | 
| 
       121 
121 
     | 
    
         
             
            - LICENSE.txt
         
     | 
| 
       122 
     | 
    
         
            -
            - README. 
     | 
| 
      
 122 
     | 
    
         
            +
            - README.md
         
     | 
| 
       123 
123 
     | 
    
         
             
            - Rakefile
         
     | 
| 
       124 
124 
     | 
    
         
             
            - VERSION
         
     | 
| 
       125 
125 
     | 
    
         
             
            - bugsnag.gemspec
         
     | 
| 
         @@ -133,8 +133,8 @@ files: 
     | 
|
| 
       133 
133 
     | 
    
         
             
            - lib/bugsnag/rails/action_controller_rescue.rb
         
     | 
| 
       134 
134 
     | 
    
         
             
            - lib/bugsnag/rails/controller_methods.rb
         
     | 
| 
       135 
135 
     | 
    
         
             
            - lib/bugsnag/railtie.rb
         
     | 
| 
       136 
     | 
    
         
            -
            - lib/bugsnag/resque.rb
         
     | 
| 
       137 
136 
     | 
    
         
             
            - lib/bugsnag/version.rb
         
     | 
| 
      
 137 
     | 
    
         
            +
            - lib/resque/failure/bugsnag.rb
         
     | 
| 
       138 
138 
     | 
    
         
             
            - rails/init.rb
         
     | 
| 
       139 
139 
     | 
    
         
             
            - test/helper.rb
         
     | 
| 
       140 
140 
     | 
    
         
             
            - test/test_bugsnag.rb
         
     | 
    
        data/README.rdoc
    DELETED
    
    | 
         @@ -1,19 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            = bugsnag
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            Description goes here.
         
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
            == Contributing to bugsnag
         
     | 
| 
       6 
     | 
    
         
            -
             
         
     | 
| 
       7 
     | 
    
         
            -
            * Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
         
     | 
| 
       8 
     | 
    
         
            -
            * Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it
         
     | 
| 
       9 
     | 
    
         
            -
            * Fork the project
         
     | 
| 
       10 
     | 
    
         
            -
            * Start a feature/bugfix branch
         
     | 
| 
       11 
     | 
    
         
            -
            * Commit and push until you are happy with your contribution
         
     | 
| 
       12 
     | 
    
         
            -
            * Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.
         
     | 
| 
       13 
     | 
    
         
            -
            * Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.
         
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
            == Copyright
         
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
            Copyright (c) 2011 James Smith. See LICENSE.txt for
         
     | 
| 
       18 
     | 
    
         
            -
            further details.
         
     | 
| 
       19 
     | 
    
         
            -
             
     | 
    
        data/lib/bugsnag/resque.rb
    DELETED
    
    | 
         @@ -1,36 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # Resque support
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            # How to use:
         
     | 
| 
       4 
     | 
    
         
            -
            #   Resque::Failure::Multiple.classes = [Resque::Failure::Redis, Bugsnag::Resque]
         
     | 
| 
       5 
     | 
    
         
            -
            #   Resque::Failure.backend = Resque::Failure::Multiple
         
     | 
| 
       6 
     | 
    
         
            -
            #
         
     | 
| 
       7 
     | 
    
         
            -
            module Bugsnag
         
     | 
| 
       8 
     | 
    
         
            -
              class Resque < ::Resque::Failure::Base
         
     | 
| 
       9 
     | 
    
         
            -
                def self.configure(&block)
         
     | 
| 
       10 
     | 
    
         
            -
                  unless ::Resque::Failure.backend < ::Resque::Failure::Multiple
         
     | 
| 
       11 
     | 
    
         
            -
                    original_backend = ::Resque::Failure.backend
         
     | 
| 
       12 
     | 
    
         
            -
                    ::Resque::Failure.backend = ::Resque::Failure::Multiple
         
     | 
| 
       13 
     | 
    
         
            -
                    ::Resque::Failure.backend.classes ||= []
         
     | 
| 
       14 
     | 
    
         
            -
                    ::Resque::Failure.backend.classes << original_backend
         
     | 
| 
       15 
     | 
    
         
            -
                  end
         
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
                  ::Resque::Failure.backend.classes << self
         
     | 
| 
       18 
     | 
    
         
            -
                  ::Bugsnag.configure(&block)
         
     | 
| 
       19 
     | 
    
         
            -
                end
         
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
                def save
         
     | 
| 
       22 
     | 
    
         
            -
                  Bugsnag.auto_notify(exception, bugsnag_job_data)
         
     | 
| 
       23 
     | 
    
         
            -
                end
         
     | 
| 
       24 
     | 
    
         
            -
                
         
     | 
| 
       25 
     | 
    
         
            -
                private
         
     | 
| 
       26 
     | 
    
         
            -
                def bugsnag_job_data
         
     | 
| 
       27 
     | 
    
         
            -
                  {
         
     | 
| 
       28 
     | 
    
         
            -
                    :user_id => nil, # TODO: How to infer a user id in resque?
         
     | 
| 
       29 
     | 
    
         
            -
                    :context => "resque: #{queue}",
         
     | 
| 
       30 
     | 
    
         
            -
                    :meta_data => {
         
     | 
| 
       31 
     | 
    
         
            -
                      :payload => payload
         
     | 
| 
       32 
     | 
    
         
            -
                    }
         
     | 
| 
       33 
     | 
    
         
            -
                  }
         
     | 
| 
       34 
     | 
    
         
            -
                end
         
     | 
| 
       35 
     | 
    
         
            -
              end
         
     | 
| 
       36 
     | 
    
         
            -
            end
         
     |