rack-datamapper-session 0.1
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/LICENSE +13 -0
- data/README +7 -0
- data/lib/rack-datamapper-session.rb +64 -0
- data/rack-datamapper-session.gemspec +16 -0
- metadata +78 -0
data/LICENSE
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
2
|
+
Version 2, December 2004
|
3
|
+
|
4
|
+
Copyright (C) 2004 Sam Hocevar
|
5
|
+
14 rue de Plaisance, 75014 Paris, France
|
6
|
+
Everyone is permitted to copy and distribute verbatim or modified
|
7
|
+
copies of this license document, and changing it is allowed as long
|
8
|
+
as the name is changed.
|
9
|
+
|
10
|
+
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
11
|
+
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
12
|
+
|
13
|
+
0. You just DO WHAT THE FUCK YOU WANT TO.
|
data/README
ADDED
@@ -0,0 +1,64 @@
|
|
1
|
+
require 'rack/session/abstract/id'
|
2
|
+
|
3
|
+
module Rack
|
4
|
+
module Session
|
5
|
+
class DataMapperSession
|
6
|
+
include DataMapper::Resource
|
7
|
+
|
8
|
+
property :id, Serial
|
9
|
+
property :sid, String, :length => 128
|
10
|
+
property :data_object, Object
|
11
|
+
|
12
|
+
def [] key
|
13
|
+
data[key]
|
14
|
+
end
|
15
|
+
|
16
|
+
def []= key, value
|
17
|
+
data[key] = value
|
18
|
+
end
|
19
|
+
|
20
|
+
def data
|
21
|
+
self.data_object ||= {}
|
22
|
+
end
|
23
|
+
|
24
|
+
def data= new_data
|
25
|
+
self.data_object = new_data
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
class DataMapper < Abstract::ID
|
30
|
+
def get_session(env, sid)
|
31
|
+
session = DataMapperSession.first(:sid => sid) if sid
|
32
|
+
|
33
|
+
unless sid and session
|
34
|
+
env['rack.errors'].puts("Session '#{sid.inspect}' not found, initializing...") if $VERBOSE and not sid.nil?
|
35
|
+
sid = generate_sid
|
36
|
+
session = DataMapperSession.new(:sid => sid)
|
37
|
+
raise 'Unable to store session' unless session.save
|
38
|
+
end
|
39
|
+
|
40
|
+
# !!! check expiry
|
41
|
+
return [sid, session]
|
42
|
+
end
|
43
|
+
|
44
|
+
def set_session(env, sid, new_session, options)
|
45
|
+
expiry = options[:expire_after]
|
46
|
+
expiry = expiry.nil? ? 0 : expiry + 1
|
47
|
+
|
48
|
+
session = DataMapperSession.first(:sid => sid) if sid
|
49
|
+
|
50
|
+
if options[:renew] or options[:drop]
|
51
|
+
session.destroy
|
52
|
+
return false if options[:drop]
|
53
|
+
sid = generate_sid
|
54
|
+
session = DataMapperSession.new(:sid => sid)
|
55
|
+
end
|
56
|
+
|
57
|
+
session.data = new_session.data
|
58
|
+
raise 'Unable to update session' unless session.save
|
59
|
+
|
60
|
+
return sid
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
Gem::Specification.new do |s|
|
4
|
+
s.name = 'rack-datamapper-session'
|
5
|
+
s.version = '0.1'
|
6
|
+
|
7
|
+
s.authors = ['Phil Pirozhkov']
|
8
|
+
s.date = '2009-11-03'
|
9
|
+
s.description = "Datamapper session for any Rack based application. Don't forget to automigrate."
|
10
|
+
s.email = ['pirj@mail.ru']
|
11
|
+
s.files = ['rack-datamapper-session.gemspec', 'README', 'LICENSE', 'lib/rack-datamapper-session.rb']
|
12
|
+
s.summary ='Datamapper session for any Rack based application'
|
13
|
+
|
14
|
+
s.add_dependency 'rack', '>= 1.0'
|
15
|
+
s.add_dependency 'dm-core', '>= 0.9'
|
16
|
+
end
|
metadata
ADDED
@@ -0,0 +1,78 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: rack-datamapper-session
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: "0.1"
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Phil Pirozhkov
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2009-11-03 00:00:00 +03:00
|
13
|
+
default_executable:
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: rack
|
17
|
+
type: :runtime
|
18
|
+
version_requirement:
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: "1.0"
|
24
|
+
version:
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: dm-core
|
27
|
+
type: :runtime
|
28
|
+
version_requirement:
|
29
|
+
version_requirements: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: "0.9"
|
34
|
+
version:
|
35
|
+
description: Datamapper session for any Rack based application. Don't forget to automigrate.
|
36
|
+
email:
|
37
|
+
- pirj@mail.ru
|
38
|
+
executables: []
|
39
|
+
|
40
|
+
extensions: []
|
41
|
+
|
42
|
+
extra_rdoc_files: []
|
43
|
+
|
44
|
+
files:
|
45
|
+
- rack-datamapper-session.gemspec
|
46
|
+
- README
|
47
|
+
- LICENSE
|
48
|
+
- lib/rack-datamapper-session.rb
|
49
|
+
has_rdoc: true
|
50
|
+
homepage:
|
51
|
+
licenses: []
|
52
|
+
|
53
|
+
post_install_message:
|
54
|
+
rdoc_options: []
|
55
|
+
|
56
|
+
require_paths:
|
57
|
+
- lib
|
58
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - ">="
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: "0"
|
63
|
+
version:
|
64
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: "0"
|
69
|
+
version:
|
70
|
+
requirements: []
|
71
|
+
|
72
|
+
rubyforge_project:
|
73
|
+
rubygems_version: 1.3.5
|
74
|
+
signing_key:
|
75
|
+
specification_version: 3
|
76
|
+
summary: Datamapper session for any Rack based application
|
77
|
+
test_files: []
|
78
|
+
|