rufus-cloche 0.1.5 → 0.1.6

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.txt CHANGED
@@ -1,6 +1,12 @@
1
1
 
2
2
  = rufus-cloche CHANGELOG.txt
3
3
 
4
+
5
+ == rufus-cloche - 0.1.6 released 2009/12/16
6
+
7
+ - made sure it works on ruby 1.8.7
8
+
9
+
4
10
  == rufus-cloche - 0.1.5 released 2009/12/15
5
11
 
6
12
  - fixed "too many files open issue"
data/Rakefile ADDED
@@ -0,0 +1,81 @@
1
+
2
+ require 'rubygems'
3
+ require 'rake'
4
+
5
+
6
+ load 'lib/rufus/cloche.rb'
7
+
8
+
9
+ #
10
+ # CLEAN
11
+
12
+ require 'rake/clean'
13
+ CLEAN.include('pkg', 'tmp', 'html')
14
+ task :default => [ :clean ]
15
+
16
+
17
+ #
18
+ # GEM
19
+
20
+ require 'jeweler'
21
+
22
+ Jeweler::Tasks.new do |gem|
23
+
24
+ gem.version = Rufus::Cloche::VERSION
25
+ gem.name = 'rufus-cloche'
26
+ gem.summary = 'a very stupid JSON hash store'
27
+ gem.description = %{
28
+ A very stupid JSON hash store.
29
+
30
+ It's built on top of yajl-ruby and File.lock. Defaults to 'json' (or 'json_pure') if yajl-ruby is not present (it's probably just a "gem install yajl-ruby" away.
31
+
32
+ Strives to be process-safe and thread-safe.
33
+ }
34
+ gem.email = 'jmettraux@gmail.com'
35
+ gem.homepage = 'http://github.com/jmettraux/rufus-cloche/'
36
+ gem.authors = [ 'John Mettraux' ]
37
+ gem.rubyforge_project = 'rufus'
38
+
39
+ gem.test_file = 'test/test.rb'
40
+
41
+ gem.add_dependency 'yajl-ruby'
42
+ gem.add_development_dependency "yard", ">= 0"
43
+
44
+ # gemspec spec : http://www.rubygems.org/read/chapter/20
45
+ end
46
+ Jeweler::GemcutterTasks.new
47
+
48
+
49
+ #
50
+ # DOC
51
+
52
+ begin
53
+
54
+ require 'yard'
55
+
56
+ YARD::Rake::YardocTask.new do |doc|
57
+ doc.options = [
58
+ '-o', 'html/rufus-cloche', '--title',
59
+ "rufus-cloche #{Rufus::Cloche::VERSION}"
60
+ ]
61
+ end
62
+
63
+ rescue LoadError
64
+
65
+ task :yardoc do
66
+ abort "YARD is not available : sudo gem install yard"
67
+ end
68
+ end
69
+
70
+
71
+ #
72
+ # TO THE WEB
73
+
74
+ task :upload_website => [ :clean, :rdoc ] do
75
+
76
+ account = 'jmettraux@rubyforge.org'
77
+ webdir = '/var/www/gforge-projects/rufus'
78
+
79
+ sh "rsync -azv -e ssh html/rufus-cloche #{account}:#{webdir}/"
80
+ end
81
+
data/lib/rufus/cloche.rb CHANGED
@@ -57,7 +57,7 @@ module Rufus
57
57
  end
58
58
  end
59
59
 
60
- VERSION = '0.1.5'
60
+ VERSION = '0.1.6'
61
61
 
62
62
  attr_reader :dir
63
63
 
@@ -108,7 +108,7 @@ module Rufus
108
108
 
109
109
  doc['_rev'] = doc['_rev'] + 1
110
110
 
111
- File.open(file, 'wb') { |io| io.write(Cloche.json_encode(doc)) }
111
+ File.open(file.path, 'wb') { |io| io.write(Cloche.json_encode(doc)) }
112
112
  end
113
113
 
114
114
  nil
data/test/bm/bm0.rb ADDED
@@ -0,0 +1,66 @@
1
+
2
+ $:.unshift('lib')
3
+ require 'benchmark'
4
+ require 'rubygems'
5
+ require 'yajl'
6
+ require 'rufus/cloche'
7
+
8
+ N = 250
9
+
10
+ DOC = { '_id' => '0', 'type' => 'benchmark' }
11
+ 1000.times { |i| DOC["key#{i}"] = { 'a' => 'b', 'c' => 'd', 'e' =>'f' } }
12
+
13
+ CLO = Rufus::Cloche.new(:dir => 'bm_cloche')
14
+
15
+ Benchmark.benchmark(' ' * 31 + Benchmark::Tms::CAPTION, 31) do |b|
16
+
17
+ b.report('marshal to file') do
18
+ N.times do
19
+ File.open('out.marshal', 'wb') { |f| f.write(Marshal.dump(DOC)) }
20
+ end
21
+ end
22
+ b.report('yajl to file') do
23
+ N.times do
24
+ File.open('out.json', 'wb') { |f| f.write(Yajl::Encoder.encode(DOC)) }
25
+ end
26
+ end
27
+ b.report('to cloche') do
28
+ N.times do |i|
29
+ DOC['_id'] = i.to_s
30
+ DOC['_rev'] = -1
31
+ CLO.put(DOC)
32
+ end
33
+ end
34
+
35
+ puts
36
+
37
+ b.report('marshal from file') do
38
+ N.times do
39
+ doc = Marshal.load(File.read('out.marshal'))
40
+ end
41
+ end
42
+ b.report('yajl from file') do
43
+ N.times do
44
+ doc = Yajl::Parser.parse(File.read('out.json'))
45
+ end
46
+ end
47
+ b.report('from cloche') do
48
+ N.times do |i|
49
+ doc = CLO.get('benchmark', i.to_s)
50
+ end
51
+ end
52
+
53
+ #puts
54
+ #require 'json'
55
+ #b.report('json to file') do
56
+ # N.times do
57
+ # File.open('out.json', 'wb') { |f| f.write(DOC.to_json) }
58
+ # end
59
+ #end
60
+ #b.report('json from file') do
61
+ # N.times do
62
+ # doc = ::JSON.parse(File.read('out.json'))
63
+ # end
64
+ #end
65
+ end
66
+
data/test/ct_worker.rb ADDED
@@ -0,0 +1,37 @@
1
+
2
+ require 'rubygems'
3
+ require 'lib/rufus/cloche'
4
+
5
+ CLO = Rufus::Cloche.new(:dir => 'cloche')
6
+
7
+ p $$
8
+
9
+ def process (task)
10
+ puts "#{$$} . processing task #{task['_id']}"
11
+ r = CLO.delete(task)
12
+ if r
13
+ puts "#{$$} x could not process task #{task['_id']} ===================="
14
+ else
15
+ icon = task['_id'].match(/^#{$$}:/) ? 'o' : 'O'
16
+ puts "#{$$} #{icon} processed task #{task['_id']}"
17
+ end
18
+ end
19
+
20
+ loop do
21
+
22
+ CLO.get_many('task').each { |task| process(task) }
23
+
24
+ (rand * 12).to_i.times do |i|
25
+ nt = {
26
+ '_id' => "#{$$}:#{i}:#{(Time.now.to_f * 1000).to_i}",
27
+ 'type' => 'task'
28
+ }
29
+ t = CLO.put(nt)
30
+ if t
31
+ puts "#{$$} x new task #{nt['_id']} (failed)"
32
+ else
33
+ puts "#{$$} . new task #{nt['_id']}"
34
+ end
35
+ end
36
+ end
37
+
data/test/ct_writer.rb ADDED
@@ -0,0 +1,21 @@
1
+
2
+ require 'rubygems'
3
+ require 'lib/rufus/cloche'
4
+
5
+ CLO = Rufus::Cloche.new(:dir => 'cloche')
6
+
7
+ p $$
8
+
9
+ 100.times do
10
+ doc = CLO.get('person', 'john')
11
+ sleep rand
12
+ doc['pid'] = $$.to_s
13
+ d = CLO.put(doc)
14
+ puts d ? '* failure' : '. success'
15
+ if d
16
+ d['pid'] = $$.to_s
17
+ d = CLO.put(d)
18
+ puts d ? ' re_failure' : ' re_success'
19
+ end
20
+ end
21
+
data/test/test.rb CHANGED
@@ -5,11 +5,14 @@
5
5
  # Fri Nov 13 09:09:58 JST 2009
6
6
  #
7
7
 
8
+ require 'rubygems'
9
+
8
10
  ROOT = File.join(File.dirname(__FILE__), '..')
9
11
 
10
12
  require 'test/unit'
11
13
  require File.join(ROOT, %w[ lib rufus cloche.rb ])
12
14
 
15
+
13
16
  class ClocheTest < Test::Unit::TestCase
14
17
 
15
18
  def setup
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rufus-cloche
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Mettraux
@@ -9,10 +9,29 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-12-15 00:00:00 +09:00
12
+ date: 2009-12-16 00:00:00 +09:00
13
13
  default_executable:
14
- dependencies: []
15
-
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: yajl-ruby
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: "0"
24
+ version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: yard
27
+ type: :development
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: "0"
34
+ version:
16
35
  description: "\n\
17
36
  A very stupid JSON hash store.\n\n\
18
37
  It's built on top of yajl-ruby and File.lock. Defaults to 'json' (or 'json_pure') if yajl-ruby is not present (it's probably just a \"gem install yajl-ruby\" away.\n\n\
@@ -23,24 +42,28 @@ executables: []
23
42
  extensions: []
24
43
 
25
44
  extra_rdoc_files:
45
+ - LICENSE.txt
26
46
  - README.rdoc
27
- - CHANGELOG.txt
28
- - CREDITS.txt
29
47
  files:
30
- - lib/rufus/cloche.rb
31
- - lib/rufus-cloche.rb
32
48
  - CHANGELOG.txt
33
49
  - CREDITS.txt
34
50
  - LICENSE.txt
35
- - TODO.txt
36
51
  - README.rdoc
37
- has_rdoc: false
52
+ - Rakefile
53
+ - TODO.txt
54
+ - lib/rufus-cloche.rb
55
+ - lib/rufus/cloche.rb
56
+ - test/bm/bm0.rb
57
+ - test/ct_worker.rb
58
+ - test/ct_writer.rb
59
+ - test/test.rb
60
+ has_rdoc: true
38
61
  homepage: http://github.com/jmettraux/rufus-cloche/
39
62
  licenses: []
40
63
 
41
64
  post_install_message:
42
- rdoc_options: []
43
-
65
+ rdoc_options:
66
+ - --charset=UTF-8
44
67
  require_paths:
45
68
  - lib
46
69
  required_ruby_version: !ruby/object:Gem::Requirement