Files: README CHANGELOG COPYING lib/camping.rb lib/camping/reloader.rb lib/camping/fastcgi.rb lib/camping/session.rb lib/camping/db.rb lib/camping/webrick.rb | classes: MissingLibrary Camping Camping::Views Camping::Session Camping::Controllers Camping::Controllers::ServerError Camping::Controllers::NotFound Camping::Helpers Camping::Base Camping::Models Camping::Models::Session Camping::FastCGI Camping::Mab Camping::Reloader Camping::H WEBrick WEBrick::CampingHandler

Class Camping::Models::Session < Base

(in files lib/camping/session.rb )

A database table for storing Camping sessions. Contains a unique 32-character hashid, a creation timestamp, and a column of serialized data called ivars.

Includes

Methods

Public Class method: create_schema()

Builds the session table in the database. To be used in your application‘s create method.

Like so:

  def Blog.create
      Camping::Models::Session.create_schema
      unless Blog::Models::Post.table_exists?
          ActiveRecord::Schema.define(&Blog::Models.schema)
      end
  end
    # File lib/camping/session.rb, line 62
62:     def self.create_schema
63:         unless table_exists?
64:             ActiveRecord::Schema.define do
65:                 create_table :sessions, :force => true do |t|
66:                     t.column :id,          :integer, :null => false
67:                     t.column :hashid,      :string,  :limit => 32
68:                     t.column :created_at,  :datetime
69:                     t.column :ivars,       :text
70:                 end
71:             end
72:             reset_column_information
73:         end
74:     end

Public Class method: generate(cookies)

Generates a new session ID and creates a row for the new session in the database.

    # File lib/camping/session.rb, line 30
30:     def self.generate cookies
31:         rand_max = RAND_CHARS.size
32:         sid = (0...32).inject("") { |ret,_| ret << RAND_CHARS[rand(rand_max)] }
33:         sess = Session.create :hashid => sid, :ivars => Camping::H[]
34:         cookies.camping_sid = sess.hashid
35:         sess
36:     end

Public Class method: persist(cookies)

Gets the existing session based on the camping_sid available in cookies. If none is found, generates a new session.

    # File lib/camping/session.rb, line 40
40:     def self.persist cookies
41:         if cookies.camping_sid
42:             session = Camping::Models::Session.find_by_hashid cookies.camping_sid
43:         end
44:         unless session
45:             session = Camping::Models::Session.generate cookies
46:         end
47:         session
48:     end