tokyo_wrapper 0.1.4 → 0.1.5

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
@@ -10,6 +10,29 @@
10
10
  rufus-tokyo is "ffi based ruby library to access Tokyo Cabinet and Tokyo Tyrant" by John Mettraux
11
11
  (Copyright (c) 2009-2010, see http://github.com/jmettraux/rufus-tokyo/blob/master/LICENSE.txt).
12
12
 
13
+ == Basic underlying philosophy
14
+
15
+ 1. Preserve the functionality and behaviour of rufus-tokyo.
16
+
17
+ 1-1. No fork of rufus-tokyo.
18
+
19
+ 1-2. This gem doesn't open rufus-tokyo class and add a functionality there.
20
+ It is developed as a pure wrapper.
21
+
22
+ 1-3. The minimum or no exception handling of its own is done.
23
+ All the exceptions should directly come from rufus-tokyo, so that usage of this gem doesn't
24
+ interfere the usage of rufus-tokyo to access Tokyo Cabinet.
25
+ (Of course, as found necessary, this gem raises its own exception but it should be minimum.)
26
+
27
+ 2. The data are used in Hash format.
28
+
29
+ 2-1. This gem is not meant to be a mapper to Object like Object-Relational Mapping.
30
+ Comment from the author (tadatoshi):
31
+ "I'm using Ruby on Rails most of the time. I'm thinking of using DataMapper for all the
32
+ Object-Relational Mappings when Ruby on Rails 3.0 becomes available.
33
+ I don't know much about DataMapper for Tokyo Cabinet so I cannot make a comment about it.
34
+ But at least, I'm thinking of using this gem only when I want to use the data in Hash format."
35
+
13
36
  == Required Ruby Gems
14
37
 
15
38
  rufus-tokyo 1.0.1 or above.
@@ -51,10 +51,14 @@ module TokyoWrapper
51
51
  @table.query
52
52
  end
53
53
 
54
- def find(id)
55
- @table[id.to_s]
54
+ def find(id, options = {})
55
+ if !options.empty? && options[:pk_included] == true
56
+ @table[id.to_s].merge({:pk => id.to_s})
57
+ else
58
+ @table[id.to_s]
59
+ end
56
60
  end
57
-
61
+
58
62
  def all_by_key_value(key, value)
59
63
  @table.query do |query|
60
64
  query.add key, :equals, value
Binary file
@@ -0,0 +1,2 @@
1
+ This is for testing storing the content of the file.
2
+ Don't modify the content.
@@ -139,6 +139,40 @@ describe TokyoWrapper::Table do
139
139
 
140
140
  end
141
141
 
142
+ context "Find" do
143
+
144
+ it "should find a row with a given id" do
145
+
146
+ begin
147
+ write_table = TokyoWrapper::Table.create_with_create_write_non_blocking_lock(@table_file)
148
+
149
+ data_hash = {"street" => "1111 Main",
150
+ "city" => "Montreal",
151
+ "notes" => "Some notes"}
152
+ id = write_table.add(data_hash)
153
+ ensure
154
+ write_table.close unless write_table.nil?
155
+ end
156
+
157
+ begin
158
+ read_table = TokyoWrapper::Table.create_with_read_non_locking(@table_file)
159
+
160
+ read_table.find(id).should == {"street" => "1111 Main",
161
+ "city" => "Montreal",
162
+ "notes" => "Some notes"}
163
+ read_table.find(id, :pk_included => true).should == {:pk => id.to_s,
164
+ "street" => "1111 Main",
165
+ "city" => "Montreal",
166
+ "notes" => "Some notes"}
167
+
168
+ ensure
169
+ read_table.close unless read_table.nil?
170
+ end
171
+
172
+ end
173
+
174
+ end
175
+
142
176
  context "Find all" do
143
177
 
144
178
  it "should find all the rows that have a given value" do
@@ -192,4 +226,75 @@ describe TokyoWrapper::Table do
192
226
 
193
227
  end
194
228
 
229
+ context "store file content" do
230
+
231
+ it "should store the content of the specified text file" do
232
+
233
+ begin
234
+ write_table = TokyoWrapper::Table.create_with_create_write_non_blocking_lock(@table_file)
235
+
236
+ temp_file_content = open(File.expand_path(File.dirname(__FILE__) + '/../fixtures/temp.txt')).read
237
+
238
+ data_hash = {"filename" => "temp.txt",
239
+ "content_type" => "text/plain",
240
+ "size" => File.size(File.expand_path(File.dirname(__FILE__) + '/../fixtures/temp.txt')),
241
+ "file_data" => temp_file_content}
242
+ id = write_table.add(data_hash)
243
+
244
+ ensure
245
+ write_table.close unless write_table.nil?
246
+ end
247
+
248
+ begin
249
+ read_table = TokyoWrapper::Table.create_with_read_non_locking(@table_file)
250
+
251
+ read_table.find(id)["filename"].should == "temp.txt"
252
+ read_table.find(id)["content_type"].should == "text/plain"
253
+ read_table.find(id)["size"].should == "79"
254
+ read_table.find(id)["file_data"].should == "This is for testing storing the content of the file. \nDon't modify the content."
255
+ ensure
256
+ read_table.close unless read_table.nil?
257
+ end
258
+
259
+ end
260
+
261
+ it "should store the content of the specified image file" do
262
+
263
+ begin
264
+ write_table = TokyoWrapper::Table.create_with_create_write_non_blocking_lock(@table_file)
265
+
266
+ image_file_content = open(File.expand_path(File.dirname(__FILE__) + '/../fixtures/rails.png')).read
267
+
268
+ data_hash = {"filename" => "rails.png",
269
+ "content_type" => "image/png",
270
+ "size" => File.size(File.expand_path(File.dirname(__FILE__) + '/../fixtures/rails.png')),
271
+ "file_data" => image_file_content}
272
+ id = write_table.add(data_hash)
273
+
274
+ ensure
275
+ write_table.close unless write_table.nil?
276
+ end
277
+
278
+ begin
279
+ read_table = TokyoWrapper::Table.create_with_read_non_locking(@table_file)
280
+
281
+ read_table.find(id)["filename"].should == "rails.png"
282
+ read_table.find(id)["content_type"].should == "image/png"
283
+ read_table.find(id)["size"].should == "1787"
284
+
285
+ file_for_retrieved_content = File.new(File.expand_path(File.dirname(__FILE__) + '/../fixtures/retrieved_rails.png'), "w")
286
+ file_for_retrieved_content.write(read_table.find(id)["file_data"])
287
+ file_for_retrieved_content.close
288
+ File.exists?(File.expand_path(File.dirname(__FILE__) + '/../fixtures/retrieved_rails.png')).should be_true
289
+ File.size(File.expand_path(File.dirname(__FILE__) + '/../fixtures/retrieved_rails.png')).should == File.size(File.expand_path(File.dirname(__FILE__) + '/../fixtures/rails.png'))
290
+
291
+ ensure
292
+ File.delete(File.expand_path(File.dirname(__FILE__) + '/../fixtures/retrieved_rails.png')) if File.exists?(File.expand_path(File.dirname(__FILE__) + '/../fixtures/retrieved_rails.png'))
293
+ read_table.close unless read_table.nil?
294
+ end
295
+
296
+ end
297
+
298
+ end
299
+
195
300
  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.4
4
+ version: 0.1.5
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-01-24 00:00:00 -05:00
12
+ date: 2010-01-29 00:00:00 -05:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
@@ -29,6 +29,8 @@ files:
29
29
  - lib/tokyo_wrapper.rb
30
30
  - Rakefile
31
31
  - README.rdoc
32
+ - spec/fixtures/rails.png
33
+ - spec/fixtures/temp.txt
32
34
  - spec/macros/rufus_tokyo_macros.rb
33
35
  - spec/spec_helper.rb
34
36
  - spec/tokyo_cabinet_files/table.tct