Module: Interpol::Sinatra::RequestParamsParser::SinatraOverrides

Extended by:
Forwardable
Defined in:
lib/interpol/sinatra/request_params_parser.rb

Overview

Contains methods that override sinatra methods.

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.being_processed_by_sinatra?(block) ⇒ Boolean

Returns:

  • (Boolean)


143
144
145
146
147
148
149
150
# File 'lib/interpol/sinatra/request_params_parser.rb', line 143

def self.being_processed_by_sinatra?(block)
  # In case the block is nil or we're on 1.8 w/o #source_location...
  # Just assume the route is being processed by sinatra.
  # It's an exceptional case for it to not be (e.g. NewRelic's
  # Sinatra hook).
  return true unless block.respond_to?(:source_location)
  block.source_location.first.end_with?('sinatra/base.rb')
end

Instance Method Details

#paramsObject



152
153
154
# File 'lib/interpol/sinatra/request_params_parser.rb', line 152

def params
  @_parsed_params || super
end

#process_route(*method_args, &block) ⇒ Object

We cannot access the full params (w/ path params) in a before hook, due to the order that sinatra runs the hooks in relation to route matching.



133
134
135
136
137
138
139
140
141
# File 'lib/interpol/sinatra/request_params_parser.rb', line 133

def process_route(*method_args, &block)
  return super unless SinatraOverrides.being_processed_by_sinatra?(block)

  super do |*block_args|
    with_parsed_params do
      yield *block_args
    end
  end
end

#skip_param_parsing!Object



166
167
168
# File 'lib/interpol/sinatra/request_params_parser.rb', line 166

def skip_param_parsing!
  @_skip_param_parsing = true
end

#with_parsed_paramsObject



156
157
158
159
160
161
162
163
164
# File 'lib/interpol/sinatra/request_params_parser.rb', line 156

def with_parsed_params
  unless @_skip_param_parsing
    @_parsed_params = request_params_parser.validate_and_parse_params(self)
  end

  yield
ensure
  @_parsed_params = nil
end