Class: Capybara::Server::Middleware Private
- Inherits:
-
Object
- Object
- Capybara::Server::Middleware
- Defined in:
- lib/capybara/server/middleware.rb
This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.
Defined Under Namespace
Classes: Counter
Instance Attribute Summary collapse
- #error ⇒ Object readonly private
Instance Method Summary collapse
- #call(env) ⇒ Object private
- #clear_error ⇒ Object private
-
#initialize(app, server_errors, extra_middleware = []) ⇒ Middleware
constructor
private
A new instance of Middleware.
- #pending_requests? ⇒ Boolean private
Constructor Details
#initialize(app, server_errors, extra_middleware = []) ⇒ Middleware
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns a new instance of Middleware.
25 26 27 28 29 30 31 32 |
# File 'lib/capybara/server/middleware.rb', line 25 def initialize(app, server_errors, extra_middleware = []) @app = app @extended_app = extra_middleware.inject(@app) do |ex_app, klass| klass.new(ex_app) end @counter = Counter.new @server_errors = server_errors end |
Instance Attribute Details
#error ⇒ Object (readonly)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
23 24 25 |
# File 'lib/capybara/server/middleware.rb', line 23 def error @error end |
Instance Method Details
#call(env) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/capybara/server/middleware.rb', line 42 def call(env) if env['PATH_INFO'] == '/__identify__' [200, {}, [@app.object_id.to_s]] else @counter.increment begin @extended_app.call(env) rescue *@server_errors => e @error ||= e raise e ensure @counter.decrement end end end |
#clear_error ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
38 39 40 |
# File 'lib/capybara/server/middleware.rb', line 38 def clear_error @error = nil end |
#pending_requests? ⇒ Boolean
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
34 35 36 |
# File 'lib/capybara/server/middleware.rb', line 34 def pending_requests? @counter.value.positive? end |