mongo_session_store 1.1.2 → 2.0.0.pre
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.md +22 -8
- data/lib/mongo_session_store/mongo_mapper.rb +8 -6
- data/lib/mongo_session_store/mongoid.rb +9 -6
- metadata +43 -23
data/README.md
CHANGED
@@ -6,32 +6,46 @@ This is a fork of the DataMapper session store, modified to work with MongoMappe
|
|
6
6
|
|
7
7
|
## Installation
|
8
8
|
|
9
|
+
The current version is only compatible with Rails 3
|
10
|
+
|
9
11
|
gem install mongo_session_store
|
10
12
|
|
13
|
+
However if you want to use it with Rails 2.3.x, you just have to install the latest 1.x version
|
14
|
+
|
15
|
+
gem install mongo_session_store --version=1.1.2
|
16
|
+
|
11
17
|
## Usage with MongoMapper
|
12
18
|
|
13
|
-
In
|
19
|
+
In your Gemfile:
|
14
20
|
|
15
|
-
|
16
|
-
|
21
|
+
gem "mongo_mapper-rails3", :require => "mongo_mapper"
|
22
|
+
gem "mongo_session_store"
|
17
23
|
|
18
|
-
In the session_store initializer:
|
24
|
+
In the session_store initializer (config/initializers/session_store.rb):
|
19
25
|
|
20
26
|
require "mongo_session_store/mongo_mapper"
|
21
27
|
ActionController::Base.session_store = :mongo_mapper_store
|
22
28
|
|
23
29
|
## Usage with Mongoid
|
24
30
|
|
25
|
-
In
|
31
|
+
In your Gemfile:
|
26
32
|
|
27
|
-
|
28
|
-
|
33
|
+
gem "mongoid"
|
34
|
+
gem "mongo_session_store"
|
29
35
|
|
30
|
-
In the session_store initializer:
|
36
|
+
In the session_store initializer (config/initializers/session_store.rb):
|
31
37
|
|
32
38
|
require "mongo_session_store/mongoid"
|
33
39
|
ActionController::Base.session_store = :mongoid_store
|
34
40
|
|
41
|
+
## Contributors
|
42
|
+
|
43
|
+
* Nicolas Mérouze
|
44
|
+
* Chris Brickley
|
45
|
+
* Tony Pitale
|
46
|
+
* Nicola Racco
|
47
|
+
* Matt Powell
|
48
|
+
|
35
49
|
## License
|
36
50
|
|
37
51
|
Copyright (c) 2010 Nicolas Mérouze
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'mongo_mapper'
|
2
2
|
|
3
|
-
module
|
3
|
+
module ActionDispatch
|
4
4
|
module Session
|
5
5
|
class MongoMapperStore < AbstractStore
|
6
6
|
|
@@ -9,7 +9,7 @@ module ActionController
|
|
9
9
|
key :data, String, :default => [Marshal.dump({})].pack("m*")
|
10
10
|
timestamps!
|
11
11
|
|
12
|
-
ensure_index :updated_at
|
12
|
+
ensure_index :updated_at if MongoMapper.class_variables.include? '@@database'
|
13
13
|
end
|
14
14
|
|
15
15
|
# The class used for session storage.
|
@@ -20,7 +20,7 @@ module ActionController
|
|
20
20
|
|
21
21
|
private
|
22
22
|
def generate_sid
|
23
|
-
|
23
|
+
BSON::ObjectID.new
|
24
24
|
end
|
25
25
|
|
26
26
|
def get_session(env, sid)
|
@@ -33,14 +33,16 @@ module ActionController
|
|
33
33
|
def set_session(env, sid, session_data)
|
34
34
|
record = env[SESSION_RECORD_KEY] ||= find_session(sid)
|
35
35
|
record.data = pack(session_data)
|
36
|
-
#
|
37
|
-
|
36
|
+
# Rack spec dictates that set_session should return true or false
|
37
|
+
# depending on whether or not the session was saved or not.
|
38
|
+
# However, ActionPack seems to want a session id instead.
|
39
|
+
record.save ? sid : false
|
38
40
|
end
|
39
41
|
|
40
42
|
def find_session(id)
|
41
43
|
@@session_class.find(id) ||
|
42
44
|
@@session_class.new(:id=>id)
|
43
|
-
rescue
|
45
|
+
rescue BSON::InvalidObjectID
|
44
46
|
@@session_class.new(:id => generate_sid)
|
45
47
|
end
|
46
48
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'mongoid'
|
2
2
|
|
3
|
-
module
|
3
|
+
module ActionDispatch
|
4
4
|
module Session
|
5
5
|
class MongoidStore < AbstractStore
|
6
6
|
|
@@ -20,7 +20,7 @@ module ActionController
|
|
20
20
|
|
21
21
|
private
|
22
22
|
def generate_sid
|
23
|
-
|
23
|
+
BSON::ObjectID.new
|
24
24
|
end
|
25
25
|
|
26
26
|
def get_session(env, sid)
|
@@ -33,13 +33,16 @@ module ActionController
|
|
33
33
|
def set_session(env, sid, session_data)
|
34
34
|
record = env[SESSION_RECORD_KEY] ||= find_session(sid)
|
35
35
|
record.data = pack(session_data)
|
36
|
-
#
|
37
|
-
|
36
|
+
# Rack spec dictates that set_session should return true or false
|
37
|
+
# depending on whether or not the session was saved or not.
|
38
|
+
# However, ActionPack seems to want a session id instead.
|
39
|
+
record.save ? sid : false
|
38
40
|
end
|
39
41
|
|
40
42
|
def find_session(id)
|
41
|
-
|
42
|
-
|
43
|
+
id = BSON::ObjectID.from_string(id.to_s)
|
44
|
+
@@session_class.first(:conditions => { :_id => id }) ||
|
45
|
+
@@session_class.new(:id => id)
|
43
46
|
end
|
44
47
|
|
45
48
|
def pack(data)
|
metadata
CHANGED
@@ -1,7 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mongo_session_store
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
prerelease: true
|
5
|
+
segments:
|
6
|
+
- 2
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- pre
|
10
|
+
version: 2.0.0.pre
|
5
11
|
platform: ruby
|
6
12
|
authors:
|
7
13
|
- "Nicolas M\xC3\xA9rouze"
|
@@ -11,39 +17,49 @@ autorequire:
|
|
11
17
|
bindir: bin
|
12
18
|
cert_chain: []
|
13
19
|
|
14
|
-
date: 2010-
|
20
|
+
date: 2010-06-04 00:00:00 +02:00
|
15
21
|
default_executable:
|
16
22
|
dependencies:
|
17
23
|
- !ruby/object:Gem::Dependency
|
18
24
|
name: actionpack
|
19
|
-
|
20
|
-
|
21
|
-
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
prerelease: false
|
26
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
22
27
|
requirements:
|
23
28
|
- - ~>
|
24
29
|
- !ruby/object:Gem::Version
|
25
|
-
|
26
|
-
|
30
|
+
segments:
|
31
|
+
- 3
|
32
|
+
- 0
|
33
|
+
version: "3.0"
|
34
|
+
type: :runtime
|
35
|
+
version_requirements: *id001
|
27
36
|
- !ruby/object:Gem::Dependency
|
28
|
-
name: mongo_mapper
|
29
|
-
|
30
|
-
|
31
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
name: mongo_mapper-rails3
|
38
|
+
prerelease: false
|
39
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
32
40
|
requirements:
|
33
41
|
- - ">="
|
34
42
|
- !ruby/object:Gem::Version
|
35
|
-
|
36
|
-
|
43
|
+
segments:
|
44
|
+
- 0
|
45
|
+
- 7
|
46
|
+
- 2
|
47
|
+
version: 0.7.2
|
48
|
+
type: :development
|
49
|
+
version_requirements: *id002
|
37
50
|
- !ruby/object:Gem::Dependency
|
38
51
|
name: mongoid
|
39
|
-
|
40
|
-
|
41
|
-
version_requirements: !ruby/object:Gem::Requirement
|
52
|
+
prerelease: false
|
53
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
42
54
|
requirements:
|
43
55
|
- - ~>
|
44
56
|
- !ruby/object:Gem::Version
|
45
|
-
|
46
|
-
|
57
|
+
segments:
|
58
|
+
- 2
|
59
|
+
- 0
|
60
|
+
version: "2.0"
|
61
|
+
type: :development
|
62
|
+
version_requirements: *id003
|
47
63
|
description:
|
48
64
|
email: nicolas.merouze@gmail.com
|
49
65
|
executables: []
|
@@ -70,18 +86,22 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
70
86
|
requirements:
|
71
87
|
- - ">="
|
72
88
|
- !ruby/object:Gem::Version
|
89
|
+
segments:
|
90
|
+
- 0
|
73
91
|
version: "0"
|
74
|
-
version:
|
75
92
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
76
93
|
requirements:
|
77
|
-
- - "
|
94
|
+
- - ">"
|
78
95
|
- !ruby/object:Gem::Version
|
79
|
-
|
80
|
-
|
96
|
+
segments:
|
97
|
+
- 1
|
98
|
+
- 3
|
99
|
+
- 1
|
100
|
+
version: 1.3.1
|
81
101
|
requirements: []
|
82
102
|
|
83
103
|
rubyforge_project:
|
84
|
-
rubygems_version: 1.3.
|
104
|
+
rubygems_version: 1.3.6
|
85
105
|
signing_key:
|
86
106
|
specification_version: 3
|
87
107
|
summary: Rails session store class implemented for MongoMapper and Mongoid
|