Skip to content

Commit a20e7d7

Browse files
committed
Merge pull request #236 from getsentry/opt-out-integrations
Fix integrations depending on gem load order Close #235
2 parents fec412b + d2c2e7b commit a20e7d7

File tree

15 files changed

+20
-26
lines changed

15 files changed

+20
-26
lines changed

gemfiles/rails32.gemfile

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
source "http://rubygems.org"
22

33
gem "rails", "~> 3.2.6"
4-
gem "rake"
54
gem "rspec"
65
gem "simplecov"
76

gemfiles/rails40.gemfile

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
source "http://rubygems.org"
22

33
gem "rails", "~> 4.0.0"
4-
gem "rake"
54
gem "rspec"
65
gem "simplecov"
7-
gem "sentry-raven", :path => "../"
86

97
gemspec :path => "../"

gemfiles/rails41.gemfile

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
source "http://rubygems.org"
22

33
gem "rails", "~> 4.1.0"
4-
gem "rake"
54
gem "rspec"
65
gem "simplecov"
7-
gem "sentry-raven", :path => "../"
86

97
gemspec :path => "../"

lib/raven/base.rb

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
require 'raven/client'
66
require 'raven/event'
77
require 'raven/logger'
8-
require 'raven/rack'
98
require 'raven/interfaces/message'
109
require 'raven/interfaces/exception'
1110
require 'raven/interfaces/stack_trace'
@@ -207,13 +206,9 @@ def rack_context(env)
207206

208207
# Injects various integrations
209208
def inject
210-
require 'raven/integrations/delayed_job' if defined?(::Delayed::Plugin)
211-
require 'raven/railtie' if defined?(::Rails::Railtie)
212-
require 'raven/sidekiq' if defined?(Sidekiq)
213-
if defined?(Rake)
214-
require 'raven/rake'
215-
require 'raven/tasks'
216-
end
209+
available_integrations = %w[delayed_job rails sidekiq rack rake]
210+
integrations_to_load = available_integrations & Gem.loaded_specs.keys
211+
integrations_to_load.each { |integration| require "raven/integrations/#{integration}" }
217212
end
218213

219214
# For cross-language compat

lib/raven/rack.rb renamed to lib/raven/integrations/rack.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
require 'time'
2+
require 'rack'
23

34
module Raven
45
# Middleware for Rack applications. Any errors raised by the upstream
@@ -20,6 +21,7 @@ module Raven
2021
#
2122
# Use a standard Raven.configure call to configure your server credentials.
2223
class Rack
24+
2325
def self.capture_exception(exception, env, options = {})
2426
if env['requested_at']
2527
options[:time_spent] = Time.now - env['requested_at']

lib/raven/railtie.rb renamed to lib/raven/integrations/rails.rb

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@
22
require 'rails'
33

44
module Raven
5-
class Railtie < ::Rails::Railtie
5+
class Rails < ::Rails::Railtie
66
initializer "raven.use_rack_middleware" do |app|
77
app.config.middleware.insert 0, "Raven::Rack"
88
end
99

1010
initializer 'raven.action_controller' do
1111
ActiveSupport.on_load :action_controller do
12-
require 'raven/rails/controller_methods'
12+
require 'raven/integrations/rails/controller_methods'
1313
include Raven::Rails::ControllerMethods
1414
end
1515
end
@@ -22,17 +22,17 @@ class Railtie < ::Rails::Railtie
2222

2323
if Raven.configuration.catch_debugged_exceptions
2424
if defined?(::ActionDispatch::DebugExceptions)
25-
require 'raven/rails/middleware/debug_exceptions_catcher'
25+
require 'raven/integrations/rails/middleware/debug_exceptions_catcher'
2626
::ActionDispatch::DebugExceptions.send(:include, Raven::Rails::Middleware::DebugExceptionsCatcher)
2727
elsif defined?(::ActionDispatch::ShowExceptions)
28-
require 'raven/rails/middleware/debug_exceptions_catcher'
28+
require 'raven/integrations/rails/middleware/debug_exceptions_catcher'
2929
::ActionDispatch::ShowExceptions.send(:include, Raven::Rails::Middleware::DebugExceptionsCatcher)
3030
end
3131
end
3232
end
3333

3434
rake_tasks do
35-
require 'raven/tasks'
35+
require 'raven/integrations/tasks'
3636
end
3737
end
3838
end

lib/raven/rails/controller_methods.rb renamed to lib/raven/integrations/rails/controller_methods.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
module Raven
2-
module Rails
2+
class Rails
33
module ControllerMethods
44
def capture_message(message, options = {})
55
Raven::Rack.capture_message(message, request.env, options)

lib/raven/rails/middleware/debug_exceptions_catcher.rb renamed to lib/raven/integrations/rails/middleware/debug_exceptions_catcher.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
module Raven
2-
module Rails
2+
class Rails
33
module Middleware
44
module DebugExceptionsCatcher
55
def self.included(base)
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
require 'raven'
1+
require 'rake'
22
require 'rake/task'
3+
require 'raven/integrations/tasks'
34

45
module Rake
56
class Application
@@ -9,5 +10,4 @@ def display_error_message(ex)
910
orig_display_error_messsage(ex)
1011
end
1112
end
12-
end
13-
13+
end

lib/raven/sidekiq.rb renamed to lib/raven/integrations/sidekiq.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
require 'time'
2+
require 'sidekiq'
23

34
module Raven
45
class Sidekiq
File renamed without changes.

lib/raven/interfaces/http.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,12 @@ def initialize(*arguments)
1919
end
2020

2121
def from_rack(env)
22-
require 'rack'
2322
req = ::Rack::Request.new(env)
24-
self.url = req.url.split('?').first
23+
self.url = req.scheme && req.url.split('?').first
2524
self.method = req.request_method
2625
self.query_string = req.query_string
2726
env.each_pair do |key, value|
27+
key = key.to_s #rack env can contain symbols
2828
next unless key.upcase == key # Non-upper case stuff isn't either
2929
if key.start_with?('HTTP_')
3030
# Header

spec/raven/rack_spec.rb renamed to spec/raven/integrations/rack_spec.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
require 'spec_helper'
2+
require 'raven/integrations/rack'
23

34
describe Raven::Rack do
45
it 'should capture exceptions' do

spec/raven/rails/controller_methods_spec.rb renamed to spec/raven/integrations/rails/controller_methods_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
require 'spec_helper'
22
require 'raven'
3-
require 'raven/rails/controller_methods'
3+
require 'raven/integrations/rails/controller_methods'
44

55
describe Raven::Rails::ControllerMethods do
66
include described_class
File renamed without changes.

0 commit comments

Comments
 (0)