mongo_session_store 1.1.2 → 2.0.0.pre

Sign up to get free protection for your applications and to get access to all the features.
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 config/environment.rb:
19
+ In your Gemfile:
14
20
 
15
- config.gem "mongo_mapper"
16
- config.gem "mongo_session_store"
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 config/environment.rb:
31
+ In your Gemfile:
26
32
 
27
- config.gem "mongoid"
28
- config.gem "mongo_session_store"
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 ActionController
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
- Mongo::ObjectID.new
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
- #per rack spec: Should return true or false dependant on whether or not the session was saved or not.
37
- record.save ? true : false
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 Mongo::InvalidObjectID
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 ActionController
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
- Mongo::ObjectID.new
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
- #per rack spec: Should return true or false dependant on whether or not the session was saved or not.
37
- record.save ? true : false
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
- @@session_class.find(id) ||
42
- @@session_class.new(:id=>id)
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
- version: 1.1.2
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-03-05 00:00:00 +01:00
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
- type: :runtime
20
- version_requirement:
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
- version: "2.3"
26
- version:
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
- type: :development
30
- version_requirement:
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
- version: 0.6.1
36
- version:
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
- type: :development
40
- version_requirement:
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
- version: "1.0"
46
- version:
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
- version: "0"
80
- version:
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.5
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