Vendoring mongo_session_store so we have one less dependency
This commit is contained in:
parent
cc4c9ea4e9
commit
350aee82a8
1
Gemfile
1
Gemfile
@ -8,7 +8,6 @@ gem "locomotive_liquid", ">= 2.1.3"
|
|||||||
gem "bson_ext", ">= 1.0.8"
|
gem "bson_ext", ">= 1.0.8"
|
||||||
gem "mongoid", :git => 'http://github.com/mongoid/mongoid.git'
|
gem "mongoid", :git => 'http://github.com/mongoid/mongoid.git'
|
||||||
gem "mongoid_acts_as_tree", "= 0.1.5"
|
gem "mongoid_acts_as_tree", "= 0.1.5"
|
||||||
gem "mongo_session_store", "= 2.0.0.pre"
|
|
||||||
gem "warden"
|
gem "warden"
|
||||||
gem "devise", "= 1.1.2"
|
gem "devise", "= 1.1.2"
|
||||||
gem "haml", "= 3.0.18"
|
gem "haml", "= 3.0.18"
|
||||||
|
@ -149,8 +149,6 @@ GEM
|
|||||||
mimetype-fu (0.1.2)
|
mimetype-fu (0.1.2)
|
||||||
mongo (1.0.9)
|
mongo (1.0.9)
|
||||||
bson (>= 1.0.5)
|
bson (>= 1.0.5)
|
||||||
mongo_session_store (2.0.0.pre)
|
|
||||||
actionpack (~> 3.0)
|
|
||||||
mongoid_acts_as_tree (0.1.5)
|
mongoid_acts_as_tree (0.1.5)
|
||||||
bson (>= 0.20.1)
|
bson (>= 0.20.1)
|
||||||
mongoid (<= 2.0.0)
|
mongoid (<= 2.0.0)
|
||||||
@ -249,7 +247,6 @@ DEPENDENCIES
|
|||||||
locomotive_liquid (>= 2.1.3)
|
locomotive_liquid (>= 2.1.3)
|
||||||
mimetype-fu
|
mimetype-fu
|
||||||
mocha!
|
mocha!
|
||||||
mongo_session_store (= 2.0.0.pre)
|
|
||||||
mongoid!
|
mongoid!
|
||||||
mongoid_acts_as_tree (= 0.1.5)
|
mongoid_acts_as_tree (= 0.1.5)
|
||||||
mongrel
|
mongrel
|
||||||
|
@ -16,7 +16,7 @@ require 'locomotive/routing'
|
|||||||
require 'locomotive/regexps'
|
require 'locomotive/regexps'
|
||||||
require 'locomotive/render'
|
require 'locomotive/render'
|
||||||
|
|
||||||
require 'mongo_session_store/mongoid'
|
require 'locomotive/session_store'
|
||||||
|
|
||||||
module Locomotive
|
module Locomotive
|
||||||
|
|
||||||
|
57
lib/locomotive/session_store.rb
Normal file
57
lib/locomotive/session_store.rb
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
module ActionDispatch
|
||||||
|
module Session
|
||||||
|
class MongoidStore < AbstractStore
|
||||||
|
|
||||||
|
class Session
|
||||||
|
include Mongoid::Document
|
||||||
|
include Mongoid::Timestamps
|
||||||
|
|
||||||
|
field :data, :type => String, :default => [Marshal.dump({})].pack("m*")
|
||||||
|
index :updated_at
|
||||||
|
end
|
||||||
|
|
||||||
|
# The class used for session storage.
|
||||||
|
cattr_accessor :session_class
|
||||||
|
self.session_class = Session
|
||||||
|
|
||||||
|
SESSION_RECORD_KEY = 'rack.session.record'.freeze
|
||||||
|
|
||||||
|
private
|
||||||
|
def generate_sid
|
||||||
|
BSON::ObjectId.new
|
||||||
|
end
|
||||||
|
|
||||||
|
def get_session(env, sid)
|
||||||
|
sid ||= generate_sid
|
||||||
|
session = find_session(sid)
|
||||||
|
env[SESSION_RECORD_KEY] = session
|
||||||
|
[sid, unpack(session.data)]
|
||||||
|
end
|
||||||
|
|
||||||
|
def set_session(env, sid, session_data)
|
||||||
|
record = env[SESSION_RECORD_KEY] ||= find_session(sid)
|
||||||
|
record.data = pack(session_data)
|
||||||
|
# Rack spec dictates that set_session should return true or false
|
||||||
|
# depending on whether or not the session was saved or not.
|
||||||
|
# However, ActionPack seems to want a session id instead.
|
||||||
|
record.save ? sid : false
|
||||||
|
end
|
||||||
|
|
||||||
|
def find_session(id)
|
||||||
|
id = BSON::ObjectId.from_string(id.to_s)
|
||||||
|
@@session_class.first(:conditions => { :_id => id }) ||
|
||||||
|
@@session_class.new(:id => id)
|
||||||
|
end
|
||||||
|
|
||||||
|
def pack(data)
|
||||||
|
[Marshal.dump(data)].pack("m*")
|
||||||
|
end
|
||||||
|
|
||||||
|
def unpack(packed)
|
||||||
|
return nil unless packed
|
||||||
|
Marshal.load(packed.unpack("m*").first)
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
@ -22,7 +22,6 @@ Gem::Specification.new do |s|
|
|||||||
s.add_dependency "bson_ext", ">= 1.0.8"
|
s.add_dependency "bson_ext", ">= 1.0.8"
|
||||||
s.add_dependency "mongoid", ">= 2.0.0.beta.18"
|
s.add_dependency "mongoid", ">= 2.0.0.beta.18"
|
||||||
s.add_dependency "mongoid_acts_as_tree", "= 0.1.5"
|
s.add_dependency "mongoid_acts_as_tree", "= 0.1.5"
|
||||||
s.add_dependency "mongo_session_store", "= 2.0.0.pre"
|
|
||||||
s.add_dependency "warden"
|
s.add_dependency "warden"
|
||||||
s.add_dependency "devise", "= 1.1.2"
|
s.add_dependency "devise", "= 1.1.2"
|
||||||
s.add_dependency "haml", "= 3.0.18"
|
s.add_dependency "haml", "= 3.0.18"
|
||||||
|
Loading…
Reference in New Issue
Block a user