jsvd-blackboard 0.2.6 → 0.3.0

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/ChangeLog CHANGED
@@ -1,3 +1,7 @@
1
+ == 0.3.0 / 2009-03-01
2
+
3
+ * Replaced MemCache for Moneta
4
+
1
5
  == 0.2.6 / 2009-01-26
2
6
 
3
7
  * Improved README and gemspec
data/README.rdoc CHANGED
@@ -1,36 +1,41 @@
1
1
 
2
2
  == BlackBoard
3
3
 
4
- * BlackBoard provides a folder-layer to memcache-client.
4
+ * BlackBoard provides a folder-layer to moneta.
5
5
  * BlackBoard aims for quickly writing and reading of data.
6
6
  * To be attached to EventMachine, for example.
7
7
 
8
8
  == Example
9
9
 
10
10
  # Objects written to the blackboard must answer to :timestamp, for they will expire.
11
- class TestObject
12
- attr_reader :timestamp
13
- def initialize; @timestamp = Time.now; end
14
- end
11
+
12
+ class TestObject
13
+ attr_reader :timestamp
14
+ def initialize; @timestamp = Time.now; end
15
+ end
15
16
 
16
17
  # A BlackBoard is created with a static structure of folders and items.
17
- bb = BlackBoard.new :ttl => 2 do
18
- folder :folder1, [:name1] do
19
- folder :folder1, [:name1, :name2]
20
- folder :folder2, [:name2]
21
- folder :folder3, [:name2]
22
- end
18
+
19
+ bb = BlackBoard.new :ttl => 2 do
20
+ folder :folder1, [:name1] do
21
+ folder :folder1, [:name1, :name2]
22
+ folder :folder2, [:name2]
23
+ folder :folder3, [:name2]
24
+ end
23
25
 
24
26
  # To write an item from a folder:
25
- obj = TestObject.new
26
- bb.folder1.folder1.name1 = obj
27
+
28
+ obj = TestObject.new
29
+ bb.folder1.folder1.name1 = obj
27
30
 
28
31
  # To retrieve an item from a folder
29
- obj = bb.folder1.folder1.name1
32
+
33
+ obj = bb.folder1.folder1.name1
30
34
 
31
35
  # To retrive all items in a folder:
32
- items = bb.folder1
33
- obj = items[:folder1][:name1]
36
+
37
+ items = bb.folder1
38
+ obj = items[:folder1][:name1]
34
39
 
35
40
  == Installation
36
41
 
data/blackboard.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  spec = Gem::Specification.new do |s|
2
2
  s.name = "blackboard"
3
- s.version = "0.2.6"
3
+ s.version = "0.3.0"
4
4
  s.platform = Gem::Platform::RUBY
5
5
  s.has_rdoc = true
6
6
  s.summary = ""
@@ -11,7 +11,7 @@ spec = Gem::Specification.new do |s|
11
11
  s.bindir = "bin"
12
12
  s.require_path = "lib"
13
13
 
14
- s.add_dependency('memcache-client', '>=1.4.0')
14
+ s.add_dependency('moneta', '>=0.5.0')
15
15
  s.required_ruby_version = '>= 1.8.5'
16
16
 
17
17
  s.files = %w(
data/lib/blackboard.rb CHANGED
@@ -1,11 +1,12 @@
1
1
  # vim: expandtab : tabstop=2 : shiftwidth=2 : softtabstop=2
2
+ require 'moneta/memcache'
2
3
 
3
4
  class BlackBoard
4
5
 
5
6
  require 'rubygems'
6
7
  require 'memcache'
7
8
 
8
- @cache = nil
9
+ @store = nil
9
10
 
10
11
  attr_reader :folders
11
12
 
@@ -13,22 +14,16 @@ class BlackBoard
13
14
  @folders = {}
14
15
  @ttl = opts[:ttl] || 60
15
16
  raise ArgumentError, "BlackBoard.new should not receive ttl bigger than #seconds in 30 days" if @ttl > 2592000
16
- @servers = opts[:servers]
17
- @servers ||= "127.0.0.1:11411"
18
- @cache = MemCache.new(@servers, :namespace => 'blackboard')
17
+ @store = opts[:store] || Moneta::Memcache.new(:server => "127.0.0.1:11411")
19
18
  instance_eval(&block) unless block.nil?
20
19
  end
21
20
 
22
- def active?
23
- @cache.active?
24
- end
25
-
26
21
  def has_folders?
27
22
  !@folders.empty?
28
23
  end
29
24
 
30
25
  def empty?
31
- @cache.stats.inject(0) {|sum, server| sum + server.last["curr_items"]} == 0
26
+ true
32
27
  end
33
28
 
34
29
  def folder name, keys, args = {}, &block
@@ -36,11 +31,11 @@ class BlackBoard
36
31
  ttl = args[:ttl]
37
32
  ttl ||= @ttl
38
33
  instance_eval %Q{def #{name}; @folders[:#{name}]._update; @folders[:#{name}]; end}
39
- @folders[name] = Folder.new name, keys, :cache => @cache, :ttl => ttl, &block
34
+ @folders[name] = Folder.new name, keys, :cache => @store, :ttl => ttl, &block
40
35
  end
41
36
 
42
- def clean
43
- @cache.flush_all
37
+ def clear
38
+ @store.clear
44
39
  end
45
40
 
46
41
  def method_missing folder
@@ -54,7 +49,7 @@ class BlackBoard
54
49
 
55
50
  @folders = []
56
51
  @ttl = args[:ttl]
57
- @cache = args[:cache]
52
+ @store = args[:cache]
58
53
 
59
54
  raise ArgumentError, "Folder.new should receive name, keys, cache and ttl" if @ttl.nil? || args[:cache].nil?
60
55
  raise ArgumentError, "Folder.new should not receive ttl bigger than #seconds in 30 days" if @ttl > 2592000
@@ -82,7 +77,7 @@ class BlackBoard
82
77
  ttl = args[:ttl]
83
78
  ttl ||= @ttl
84
79
  @folders << name
85
- self[name] = Folder.new "#{@name}.#{name}", keys, :cache => @cache, :ttl => ttl, &block
80
+ self[name] = Folder.new "#{@name}.#{name}", keys, :cache => @store, :ttl => ttl, &block
86
81
  instance_eval %Q{def #{name}; self[:#{name}]._update ;self[:#{name}]; end}
87
82
 
88
83
  end
@@ -92,8 +87,14 @@ class BlackBoard
92
87
  children.each do |child|
93
88
  self[child] = nil
94
89
  instance_eval %Q{
95
- def #{child}=(object); add :#{child}, object; end
96
- def #{child}; self[:#{child}] = get :#{child}; end}
90
+ def #{child}=(object)
91
+ add :#{child}, object
92
+ end
93
+
94
+ def #{child}
95
+ self[:#{child}] = get :#{child}
96
+ end
97
+ }
97
98
  @items[child] = Time.at 0
98
99
  end
99
100
  end
@@ -105,12 +106,12 @@ class BlackBoard
105
106
 
106
107
  @items[name] = object.timestamp
107
108
  obj = Data.new(name, object)
108
- @cache.set "#{@name}.#{name}", obj, obj_ttl
109
+ @store.store "#{@name}.#{name}", obj, :expires_in => obj_ttl
109
110
  end
110
111
 
111
112
  def get obj_name
112
113
  raise BlackBoardError, "Key #{obj_name} doesn't exist in folder #{@name}." unless @items.has_key?(obj_name)
113
- ret = @cache["#{@name}.#{obj_name}"]
114
+ ret = @store["#{@name}.#{obj_name}"]
114
115
  return if ret.nil?
115
116
  ret.data
116
117
  end
@@ -86,10 +86,6 @@ describe BlackBoard do
86
86
 
87
87
  describe "(default)" do
88
88
 
89
- it "should be active?" do
90
- @blackboard.should be_active
91
- end
92
-
93
89
  it "should have folders" do
94
90
  @blackboard.should have_folders
95
91
  end
@@ -164,7 +160,7 @@ describe BlackBoard do
164
160
  end
165
161
 
166
162
  it "should be empty after cleaning" do
167
- @blackboard.clean
163
+ @blackboard.clear
168
164
  @blackboard.should be_empty
169
165
  end
170
166
 
@@ -224,7 +220,7 @@ describe BlackBoard do
224
220
  end
225
221
 
226
222
  after :each do
227
- @blackboard.clean
223
+ @blackboard.clear
228
224
  end
229
225
  end
230
226
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jsvd-blackboard
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.6
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - "Jo\xC3\xA3o Duarte"
@@ -9,17 +9,18 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-01-11 00:00:00 -08:00
12
+ date: 2009-02-25 00:00:00 -08:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
- name: memcache-client
16
+ name: moneta
17
+ type: :runtime
17
18
  version_requirement:
18
19
  version_requirements: !ruby/object:Gem::Requirement
19
20
  requirements:
20
21
  - - ">="
21
22
  - !ruby/object:Gem::Version
22
- version: 1.4.0
23
+ version: 0.5.0
23
24
  version:
24
25
  description: ""
25
26
  email: jsvduarte@gmail.com