From 5a8329161ba5d75df0c6f5e5a69737c53c5ae299 Mon Sep 17 00:00:00 2001 From: Denis Knauf Date: Tue, 23 Feb 2010 20:43:05 +0100 Subject: [PATCH] README uptodate --- README.md | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..cd709c0 --- /dev/null +++ b/README.md @@ -0,0 +1,61 @@ +Dependencies +============ + +Bdb +--- + +Your need first this library: + +http://github.com/DenisKnauf/bdb + +Download +======== + +via git: + + git clone git://github.com/DenisKnauf/sbdb.git + +Install +======= + + gem build sbdb.gemspec + gem install sbdb-*.gem + +Usage +===== + +First, open environment and database + + require 'sbdb' + Dir.mkdir 'newenv' rescue Errno::EEXIST + env = SBDB::Env.new 'newenv', SBDB::CREATE + db = env.open SBDB::Btree, 'newdb.db', :flags => SBDB::CREATE + +It works nearly like a Ruby-Hash: + + db['key'] = 'value' + db['key'] # => 'value' + db.to_hash # => {'key'=>'value'} + db.map {|k, v| [k, v].join ' => '} # => ["key => value"] + db.count # => 1 + +SBDB::DB#each uses a SBDB::Cursor: + + cursor = db.cursor + cursor.each {|k,v| puts "#{k}: ${v}" } + +**Don't forget to close everything, you've opened!** + + cursor.close + db.close + env.close + +But you can use a *lambda* to ensure to close everything: + + SBDB::Env.new( 'newenv', SBDB::CREATE) do |env| + env.open SBDB::Btree, 'newdb.db', :flags => SBDB::CREATE do |db| + db.to_hash + end + end + +SBDB::DB#to_hash creates a cursor and close it later.