riak_sessions 0.1 → 0.2

Sign up to get free protection for your applications and to get access to all the features.
data/lib/riak_sessions.rb CHANGED
@@ -1,12 +1,9 @@
1
1
  require 'rack/session/abstract/id'
2
2
  require 'thread'
3
- require 'base64'
4
- require 'jiak'
5
3
 
6
4
  module Rack
7
5
 
8
6
  # The Rack::Session::Riak uses the open source document-oriented web database Riak as a sessions backend,
9
- # it uses the Jiak ruby client library: http://hg.basho.com/riak/src/tip/client_lib/jiak.rb
10
7
  # more info about Riak: http://riak.basho.com/
11
8
  #
12
9
  # Examples:
@@ -15,8 +12,10 @@ module Rack
15
12
 
16
13
  module Session
17
14
  class RiakPool
18
- def initialize(server, port, options)
19
- @riak = JiakClient.new(server, port, '/jiak/', options)
15
+ def initialize(host, port, options={})
16
+ @host= host
17
+ @port = port
18
+ @path ='/raw/riak_session'
20
19
  end
21
20
 
22
21
  def [](session_id)
@@ -24,11 +23,10 @@ module Rack
24
23
  end
25
24
 
26
25
  def get(session_id)
27
- raise if session_id.nil? or session_id.empty?
28
- session = @riak.fetch('rack_session', session_id)
29
- data = Marshal.load(Base64.decode64(session['object']['data']))
30
- return data
31
- rescue JiakException => e
26
+ req = Net::HTTP::Get.new([@path, session_id].join('/'))
27
+ res = Net::HTTP.start(@host, @port) { |http| http.request(req) }
28
+ return Marshal.load(res.body)
29
+ rescue Net::HTTPNotFound => e
32
30
  return nil
33
31
  end
34
32
 
@@ -37,19 +35,16 @@ module Rack
37
35
  end
38
36
 
39
37
  def set(session_id, data)
40
- begin
41
- raise JiakException if session_id.nil?
42
- session = @riak.fetch('rack_session', session_id)
43
- rescue JiakException => e
44
- session = {'bucket'=>'rack_session', 'key'=>session_id, 'links'=>[]}
45
- end
46
- session['object'] = {'data'=>Base64.encode64(Marshal.dump(data))}
47
- @riak.store(session)
38
+ req = Net::HTTP::Put.new([@path, session_id].join('/'))
39
+ req.content_type = 'application/octet-stream'
40
+ req.body = Marshal.dump(data)
41
+ Net::HTTP.start(@host, @port) { |http| http.request(req) }
48
42
  return true
49
43
  end
50
44
 
51
45
  def delete(session_id)
52
- @riak.delete('rack_session', session_id)
46
+ req = Net::HTTP::Delete.new([@path, session_id].join('/'))
47
+ Net::HTTP.start(@host, @port) { |http| http.request(req) }
53
48
  end
54
49
  end
55
50
 
@@ -58,15 +53,14 @@ module Rack
58
53
  DEFAULT_OPTIONS = Abstract::ID::DEFAULT_OPTIONS.merge(
59
54
  :drop => false,
60
55
  :riak_server => '127.0.0.1',
61
- :riak_port => 8098,
62
- :riak_options => {'w'=>'3','dw'=>'3'})
56
+ :riak_port => 8098
57
+ )
63
58
 
64
59
  def initialize(app, options={})
65
60
  super
66
61
 
67
62
  @pool = RiakPool.new(@default_options[:riak_server],
68
- @default_options[:riak_port],
69
- @default_options[:riak_options])
63
+ @default_options[:riak_port])
70
64
  @mutex = Mutex.new
71
65
  end
72
66
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = 'riak_sessions'
5
- s.version = '0.1'
5
+ s.version = '0.2'
6
6
 
7
7
  s.authors = ['Igor Guerrero']
8
8
  s.date = '2009-11-24'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: riak_sessions
3
3
  version: !ruby/object:Gem::Version
4
- version: "0.1"
4
+ version: "0.2"
5
5
  platform: ruby
6
6
  authors:
7
7
  - Igor Guerrero