Sha256: 84e03b5f8994596668c8fb5b6977913c0205303b715ab8e632217320345535cc

Contents?: true

Size: 1.5 KB

Versions: 9

Compression:

Stored size: 1.5 KB

Contents

require 'mongoid'
require 'mongo_session_store/mongo_store_base'

module ActionDispatch
  module Session
    class MongoidStore < MongoStoreBase
      BINARY_CLASS = defined?(Moped::BSON::Binary) ? Moped::BSON::Binary : BSON::Binary

      class Session
        include Mongoid::Document
        include Mongoid::Timestamps

        store_in :collection => MongoSessionStore.collection_name

        if Mongoid::Fields::Validators::Macro::OPTIONS.include? :overwrite
          field :_id, :type => String, :overwrite => true
        else
          field :_id, :type => String
        end
        field :data, :type => BINARY_CLASS, :default => -> { marshaled_binary({}) }
        attr_accessible :_id, :data if respond_to?(:attr_accessible)

        def marshaled_binary(data)
          self.class.marshaled_binary(data)
        end

        def self.marshaled_binary(data)
          if BINARY_CLASS.to_s == 'BSON::Binary'
            BSON::Binary.new(Marshal.dump(data), :generic)
          else
            Moped::BSON::Binary.new(:generic, Marshal.dump(data))
          end
        end
      end

      private
      def pack(data)
        session_class.marshaled_binary(data)
      end

      def unpack(packed)
        return nil unless packed
        Marshal.load(extract_data(packed))
      end

      def extract_data(packed)
        if packed.class.to_s == 'BSON::Binary'
          packed.data
        else
          packed.to_s
        end
      end
    end
  end
end

MongoidStore = ActionDispatch::Session::MongoidStore

Version data entries

9 entries across 9 versions & 4 rubygems

Version Path
mongo_session_store-rails5-7.0.0.1 lib/mongo_session_store/mongoid_store.rb
mongo_session_store-rails5-7.0.0 lib/mongo_session_store/mongoid_store.rb
ish_lib_manager-0.0.1 test/dummy/vendor/bundle/ruby/2.3.0/gems/mongo_session_store-rails4-6.0.0/lib/mongo_session_store/mongoid_store.rb
mongo_session_store-rails3-6.0.0 lib/mongo_session_store/mongoid_store.rb
mongo_session_store-rails4-6.0.0 lib/mongo_session_store/mongoid_store.rb
mongo_session_store-rails3-5.1.0 lib/mongo_session_store/mongoid_store.rb
mongo_session_store-rails4-5.1.0 lib/mongo_session_store/mongoid_store.rb
mongo_session_store-rails3-5.0.1 lib/mongo_session_store/mongoid_store.rb
mongo_session_store-rails4-5.0.1 lib/mongo_session_store/mongoid_store.rb