tokyo_wrapper 0.1.8 → 0.1.9

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/README.rdoc CHANGED
@@ -76,16 +76,29 @@
76
76
  Use when table file already exists and you want to read data from it.
77
77
  It doesn't lock the table.
78
78
 
79
- 2-2. Table object must be closed when all the operations are done by calling close method.
79
+ 2-2. Closing table.
80
80
 
81
- e.g.
81
+ 2-2-1. Table object must be closed when all the operations are done by calling close method.
82
82
 
83
- begin
84
- write_table = TokyoWrapper::Table.create_with_create_write_non_blocking_lock("table.txt")
83
+ e.g.
84
+
85
+ begin
86
+ write_table = TokyoWrapper::Table.create_with_create_write_non_blocking_lock("table.txt")
85
87
 
86
- ensure
87
- write_table.close unless write_table.nil?
88
- end
88
+ ensure
89
+ write_table.close unless write_table.nil?
90
+ end
91
+
92
+ 2-2-2. Alternatively, you can pass a block with the operations to a create method.
93
+ It is ensured that the table is closed.
94
+ The return value is the return value from the block.
95
+
96
+ e.g. This acts same as the example for 2-2-1. above
97
+ except that the return value is the last value in the block.
98
+
99
+ TokyoWrapper::Table.create_with_create_write_non_blocking_lock("table.txt") do |write_table|
100
+
101
+ end
89
102
 
90
103
  2-3. Basic operations. (Defined in TokyoWrapper::Table class itself.)
91
104
 
@@ -109,6 +122,17 @@
109
122
  ensure
110
123
  write_table.close unless write_table.nil?
111
124
  end
125
+
126
+ e.g. This acts exactly same as the example above.
127
+
128
+ id = TokyoWrapper::Table.create_with_create_write_non_blocking_lock("table.txt") do |write_table|
129
+
130
+ data_hash = {"street" => "1111 Main",
131
+ "city" => "Montreal",
132
+ "notes" => "Some notes"}
133
+ write_table.add(data_hash)
134
+
135
+ end
112
136
 
113
137
  2-3-2. Updating data.
114
138
 
@@ -13,21 +13,34 @@ module TokyoWrapper
13
13
  @table = table
14
14
  end
15
15
 
16
- def self.create_with_create_write_non_blocking_lock(file)
17
- table = Rufus::Tokyo::Table.new(File.expand_path(file), :mode => "cwf")
18
- self.new(table)
16
+ def self.create_with_create_write_non_blocking_lock(file, &block)
17
+ create(file, "cwf", &block)
19
18
  end
20
19
 
21
- def self.create_with_write_non_blocking_lock(file)
22
- table = Rufus::Tokyo::Table.new(File.expand_path(file), :mode => "wf")
23
- self.new(table)
20
+ def self.create_with_write_non_blocking_lock(file, &block)
21
+ create(file, "wf", &block)
24
22
  end
25
23
 
26
- def self.create_with_read_non_locking(file)
27
- table = Rufus::Tokyo::Table.new(File.expand_path(file), :mode => "re")
28
- self.new(table)
24
+ def self.create_with_read_non_locking(file, &block)
25
+ create(file, "re", &block)
29
26
  end
30
27
 
28
+ def self.create(file, mode, &block)
29
+ if block_given?
30
+ begin
31
+ table = Rufus::Tokyo::Table.new(File.expand_path(file), :mode => mode)
32
+ return_value_from_block = block.call(new(table))
33
+ ensure
34
+ table.close unless table.nil?
35
+ end
36
+ return_value_from_block
37
+ else
38
+ new(Rufus::Tokyo::Table.new(File.expand_path(file), :mode => mode))
39
+ end
40
+ end
41
+
42
+ private_class_method :new, :create
43
+
31
44
  def close
32
45
  @table.close
33
46
  end
@@ -338,4 +338,33 @@ describe TokyoWrapper::Table do
338
338
 
339
339
  end
340
340
 
341
+ context "Taking care of closing table after the given block is executed" do
342
+
343
+ it "should add data by providing the code to do so in the block" do
344
+
345
+ id = TokyoWrapper::Table.create_with_create_write_non_blocking_lock(@table_file) do |write_table|
346
+
347
+ data_hash = {"street" => "1111 Main",
348
+ "city" => "Montreal",
349
+ "notes" => "Some notes"}
350
+ write_table.add(data_hash)
351
+
352
+ end
353
+
354
+ TokyoWrapper::Table.create_with_read_non_locking(@table_file) do |read_table|
355
+
356
+ read_table.all.should == [{:pk => id.to_s,
357
+ "street" => "1111 Main",
358
+ "city" => "Montreal",
359
+ "notes" => "Some notes"}]
360
+
361
+ read_table.find(id).should == {"street" => "1111 Main",
362
+ "city" => "Montreal",
363
+ "notes" => "Some notes"}
364
+
365
+ end
366
+
367
+ end
368
+ end
369
+
341
370
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tokyo_wrapper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.8
4
+ version: 0.1.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tadatoshi Takahashi
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-02-05 00:00:00 -05:00
12
+ date: 2010-02-20 00:00:00 -05:00
13
13
  default_executable:
14
14
  dependencies: []
15
15