obuf 1.0.4 → 1.1.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/History.txt +5 -0
- data/lib/obuf.rb +9 -4
- data/obuf.gemspec +3 -3
- data/test/test_obuf.rb +14 -0
- metadata +9 -9
data/History.txt
CHANGED
data/lib/obuf.rb
CHANGED
@@ -19,7 +19,7 @@ require "thread" # required for ruby 18
|
|
19
19
|
#
|
20
20
|
# Both reading and writing aim to be threadsafe
|
21
21
|
class Obuf
|
22
|
-
VERSION = "1.0
|
22
|
+
VERSION = "1.1.0"
|
23
23
|
|
24
24
|
include Enumerable
|
25
25
|
|
@@ -29,14 +29,19 @@ class Obuf
|
|
29
29
|
# Returns the number of objects stored so far
|
30
30
|
attr_reader :size
|
31
31
|
|
32
|
-
|
32
|
+
# Initializes a new Obuf. If an Enumerable argument is passed each element from the
|
33
|
+
# Enumerable will be stored in the Obuf (so you can pass an IO for example)
|
34
|
+
def initialize(enumerable = [])
|
33
35
|
@sem = Mutex.new
|
34
36
|
@store = Tempfile.new("obuf")
|
35
37
|
@store.set_encoding(Encoding::BINARY) if @store.respond_to?(:set_encoding)
|
36
38
|
@store.binmode
|
37
|
-
|
38
39
|
@size = 0
|
39
|
-
|
40
|
+
|
41
|
+
# Store everything from the enumerable in self
|
42
|
+
enumerable.each(&method(:push))
|
43
|
+
|
44
|
+
yield self if block_given?
|
40
45
|
end
|
41
46
|
|
42
47
|
# Tells whether the buffer is empty
|
data/obuf.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "obuf"
|
8
|
-
s.version = "1.0
|
8
|
+
s.version = "1.1.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Julik Tarkhanov"]
|
12
|
-
s.date = "2012-
|
12
|
+
s.date = "2012-02-27"
|
13
13
|
s.description = "Stores marshaled temporary objects on-disk in a simple Enumerable"
|
14
14
|
s.email = "me@julik.nl"
|
15
15
|
s.extra_rdoc_files = [
|
@@ -29,7 +29,7 @@ Gem::Specification.new do |s|
|
|
29
29
|
s.homepage = "http://github.com/julik/obuf"
|
30
30
|
s.licenses = ["MIT"]
|
31
31
|
s.require_paths = ["lib"]
|
32
|
-
s.rubygems_version = "1.8.
|
32
|
+
s.rubygems_version = "1.8.15"
|
33
33
|
s.summary = "Ruby disk-backed object buffer"
|
34
34
|
|
35
35
|
if s.respond_to? :specification_version then
|
data/test/test_obuf.rb
CHANGED
@@ -24,6 +24,20 @@ class TestObuf < Test::Unit::TestCase
|
|
24
24
|
assert_equal values, a.map{|e| e }, "Should return the same elements from the storage"
|
25
25
|
end
|
26
26
|
|
27
|
+
def test_initialize_with_block
|
28
|
+
o = Obuf.new do | buf |
|
29
|
+
buf.push("Excitement!")
|
30
|
+
end
|
31
|
+
|
32
|
+
assert_equal 1, o.size
|
33
|
+
assert_equal %w( Excitement! ), o.to_a
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_from_enum
|
37
|
+
a = Obuf.new([1,2,3])
|
38
|
+
assert_equal [1,2,3], a.to_a
|
39
|
+
end
|
40
|
+
|
27
41
|
def test_accumulator_saves_shitload_of_objs
|
28
42
|
a = Obuf.new
|
29
43
|
50_000.times { a.push("A string" => rand) }
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: obuf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-02-27 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: jeweler
|
16
|
-
requirement: &
|
16
|
+
requirement: &4139570 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *4139570
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rake
|
27
|
-
requirement: &
|
27
|
+
requirement: &4139080 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *4139080
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: flexmock
|
38
|
-
requirement: &
|
38
|
+
requirement: &4138610 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,7 +43,7 @@ dependencies:
|
|
43
43
|
version: '0.8'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *4138610
|
47
47
|
description: Stores marshaled temporary objects on-disk in a simple Enumerable
|
48
48
|
email: me@julik.nl
|
49
49
|
executables: []
|
@@ -81,7 +81,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
81
81
|
version: '0'
|
82
82
|
requirements: []
|
83
83
|
rubyforge_project:
|
84
|
-
rubygems_version: 1.8.
|
84
|
+
rubygems_version: 1.8.15
|
85
85
|
signing_key:
|
86
86
|
specification_version: 3
|
87
87
|
summary: Ruby disk-backed object buffer
|