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
         
     |