Module: Schmobile::Filters

Defined in:
lib/schmobile/filters.rb,
lib/schmobile/filters/mobile_session.rb,
lib/schmobile/filters/is_mobile_param.rb,
lib/schmobile/filters/mobile_user_agent.rb

Overview

Filters are tests that get run against a request to determine if it’s a mobile request or not. A filter can return true, false or nil. The first non-nil value of the filter chain is the one that gets used and this also gets used to mark the session as a “mobile session”

You can manipulate the chain to add new conditions that check on e.g. request format.

Defined Under Namespace

Modules: IsMobileParam, MobileSession, MobileUserAgent

Constant Summary collapse

CHAIN =
[
  Schmobile::Filters::IsMobileParam, # Must come before session check
  Schmobile::Filters::MobileSession,
  Schmobile::Filters::MobileUserAgent # Always returns either true or false
]

Class Method Summary collapse

Class Method Details

.apply(request) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
# File 'lib/schmobile/filters.rb', line 18

def self.apply(request)
  Schmobile::Filters::CHAIN.each do |filter|
    result = filter.call(request)
    unless result.nil?
      request.session[Schmobile::IS_MOBILE] = result
      break
    end
  end

  request.session[Schmobile::IS_MOBILE] ||= false
end