# module Camping::Session

## Getting Started¶ ↑

To get sessions working for your application:

1. `require 'camping/session'`

2. Define a secret (and keep it secret): `set :secret, "SECRET!"`

3. Mixin the module: `include Camping::Session`

4. Throughout your application, use the `@state` var like a hash to store your application’s data.

    require 'camping/session'    # 1

    module Nuts
      set :secret, "Oh yeah!"    # 2
      include Camping::Session   # 3
    end

## Other backends¶ ↑

`Camping` only ships with session-cookies. However, the `@state` variable is simply a shortcut for `@env['rack.session']`. Therefore you can also use any middleware which sets this variable:

    module Nuts
      use Rack::Session::Memcache
    end

### Public Class Methods

included(app) click to toggle source

    # File lib/camping/session.rb, line 31
    def self.included(app)
      key    = "#{app}.state".downcase
      secret = app.options[:secret] || ['camping-secret',__FILE__, File.mtime('Rakefile')].join(":")*2
      raise InsecureSecretError, "Your Session Secret is too short. Minimum length is 64." if secret.length < 64
      app.use Rack::Session::Cookie, :key => key, :secrets => secret
    end