From 6fc4c97bf35ba3cb0c314a7ddf0e5995e486cb9d Mon Sep 17 00:00:00 2001 From: Ash Moran Date: Thu, 25 Aug 2011 06:00:28 +0800 Subject: [PATCH 01/17] Change dependency to be on the bdb gem rather than dk-bdb, now we have a GitHub organisation for it --- Rakefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Rakefile b/Rakefile index 2804098..bd56826 100644 --- a/Rakefile +++ b/Rakefile @@ -14,7 +14,7 @@ begin gem.authors = ["Denis Knauf"] gem.files = %w[AUTHORS README.md VERSION lib/**/*.rb test/**/*.rb] gem.require_paths = %w[lib] - gem.add_dependency 'dk-bdb' + gem.add_dependency 'bdb' end Jeweler::GemcutterTasks.new rescue LoadError From 7a7a8a7db524fdff5ba0f4e8d6f9132ac30de93c Mon Sep 17 00:00:00 2001 From: Ash Moran Date: Thu, 25 Aug 2011 06:01:20 +0800 Subject: [PATCH 02/17] Add .gitignore to ignore pkg/ --- .gitignore | 1 + 1 file changed, 1 insertion(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0c6117d --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +pkg \ No newline at end of file From 28dcffcb3516fd5f4e55b024a07874ab7930a2fe Mon Sep 17 00:00:00 2001 From: Ash Moran Date: Thu, 25 Aug 2011 06:02:49 +0800 Subject: [PATCH 03/17] Bump version to 0.0.10.1 (0.0.0.1 increment just to reflect the change in gem dependency) --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index 7c1886b..3f543b7 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.0.10 +0.0.10.1 From c66c369df0c209fc4fc83b5a216cc65fd3842bd9 Mon Sep 17 00:00:00 2001 From: Ash Moran Date: Thu, 25 Aug 2011 06:13:52 +0800 Subject: [PATCH 04/17] Update the Jeweler setup to use the new ruby-bdb homepage --- Rakefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Rakefile b/Rakefile index bd56826..60d7e66 100644 --- a/Rakefile +++ b/Rakefile @@ -10,7 +10,7 @@ begin gem.summary = %Q{Simple Ruby Berkeley DB} gem.description = %Q{Simple Ruby Berkeley DB wrapper library for bdb.} gem.email = "Denis.Knauf@gmail.com" - gem.homepage = "http://github.com/DenisKnauf/bdb" + gem.homepage = "http://github.com/ruby-bdb/sbdb" gem.authors = ["Denis Knauf"] gem.files = %w[AUTHORS README.md VERSION lib/**/*.rb test/**/*.rb] gem.require_paths = %w[lib] From 28275b71a828b6bbf3f48f8ab2554bf522cf9aa6 Mon Sep 17 00:00:00 2001 From: Ash Moran Date: Thu, 25 Aug 2011 06:16:55 +0800 Subject: [PATCH 05/17] Regenerate gemspec for version 0.0.10.1 --- am-sbdb.gemspec | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 am-sbdb.gemspec diff --git a/am-sbdb.gemspec b/am-sbdb.gemspec new file mode 100644 index 0000000..952f06e --- /dev/null +++ b/am-sbdb.gemspec @@ -0,0 +1,47 @@ +# Generated by jeweler +# DO NOT EDIT THIS FILE DIRECTLY +# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec' +# -*- encoding: utf-8 -*- + +Gem::Specification.new do |s| + s.name = %q{am-sbdb} + s.version = "0.0.10.1" + + s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version= + s.authors = [%q{Denis Knauf}] + s.date = %q{2011-08-24} + s.description = %q{Simple Ruby Berkeley DB wrapper library for bdb.} + s.email = %q{Denis.Knauf@gmail.com} + s.extra_rdoc_files = [ + "LICENSE", + "README.md" + ] + s.files = [ + "AUTHORS", + "README.md", + "VERSION", + "lib/sbdb.rb", + "lib/sbdb/cursor.rb", + "lib/sbdb/db.rb", + "lib/sbdb/environment.rb", + "lib/sbdb/transaction.rb", + "lib/sbdb/weakhash.rb" + ] + s.homepage = %q{http://github.com/ruby-bdb/sbdb} + s.require_paths = [%q{lib}] + s.rubygems_version = %q{1.8.9} + s.summary = %q{Simple Ruby Berkeley DB} + + if s.respond_to? :specification_version then + s.specification_version = 3 + + if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then + s.add_runtime_dependency(%q, [">= 0"]) + else + s.add_dependency(%q, [">= 0"]) + end + else + s.add_dependency(%q, [">= 0"]) + end +end + From d11eb016e57460e865e7bb9a490196180ce87ba9 Mon Sep 17 00:00:00 2001 From: Denis Knauf Date: Thu, 25 Aug 2011 17:15:32 +0800 Subject: [PATCH 06/17] Edited README.md via GitHub --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 67ed7aa..ccf96c8 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,14 @@ Dependencies ============ -You need first the [Bdb](http://github.com/DenisKnauf/bdb) and of course [ruby](http://ruby-lang.org). +You need first the [Bdb](http://github.com/ruby-bdb/bdb) and of course [ruby](http://ruby-lang.org). Download ======== via git: - git clone git://github.com/DenisKnauf/sbdb.git + git clone git://github.com/ruby-bdb/sbdb Install ======= From f6a10c9131ac6b1dde42b8fe29ebb2567115a7d9 Mon Sep 17 00:00:00 2001 From: Denis Knauf Date: Thu, 25 Aug 2011 00:48:41 +0200 Subject: [PATCH 07/17] updates gemspec --- .gitignore | 5 ++++- am-sbdb.gemspec | 47 ----------------------------------------------- sbdb.gemspec | 48 ------------------------------------------------ 3 files changed, 4 insertions(+), 96 deletions(-) delete mode 100644 am-sbdb.gemspec delete mode 100644 sbdb.gemspec diff --git a/.gitignore b/.gitignore index 0c6117d..486603e 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,4 @@ -pkg \ No newline at end of file +pkg +*.gem +*.gemspec +rdoc diff --git a/am-sbdb.gemspec b/am-sbdb.gemspec deleted file mode 100644 index 952f06e..0000000 --- a/am-sbdb.gemspec +++ /dev/null @@ -1,47 +0,0 @@ -# Generated by jeweler -# DO NOT EDIT THIS FILE DIRECTLY -# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec' -# -*- encoding: utf-8 -*- - -Gem::Specification.new do |s| - s.name = %q{am-sbdb} - s.version = "0.0.10.1" - - s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version= - s.authors = [%q{Denis Knauf}] - s.date = %q{2011-08-24} - s.description = %q{Simple Ruby Berkeley DB wrapper library for bdb.} - s.email = %q{Denis.Knauf@gmail.com} - s.extra_rdoc_files = [ - "LICENSE", - "README.md" - ] - s.files = [ - "AUTHORS", - "README.md", - "VERSION", - "lib/sbdb.rb", - "lib/sbdb/cursor.rb", - "lib/sbdb/db.rb", - "lib/sbdb/environment.rb", - "lib/sbdb/transaction.rb", - "lib/sbdb/weakhash.rb" - ] - s.homepage = %q{http://github.com/ruby-bdb/sbdb} - s.require_paths = [%q{lib}] - s.rubygems_version = %q{1.8.9} - s.summary = %q{Simple Ruby Berkeley DB} - - if s.respond_to? :specification_version then - s.specification_version = 3 - - if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then - s.add_runtime_dependency(%q, [">= 0"]) - else - s.add_dependency(%q, [">= 0"]) - end - else - s.add_dependency(%q, [">= 0"]) - end -end - diff --git a/sbdb.gemspec b/sbdb.gemspec deleted file mode 100644 index 612d59b..0000000 --- a/sbdb.gemspec +++ /dev/null @@ -1,48 +0,0 @@ -# Generated by jeweler -# DO NOT EDIT THIS FILE DIRECTLY -# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec' -# -*- encoding: utf-8 -*- - -Gem::Specification.new do |s| - s.name = %q{sbdb} - s.version = "0.0.10" - - s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version= - s.authors = ["Denis Knauf"] - s.date = %q{2011-08-01} - s.description = %q{Simple Ruby Berkeley DB wrapper library for bdb.} - s.email = %q{Denis.Knauf@gmail.com} - s.extra_rdoc_files = [ - "LICENSE", - "README.md" - ] - s.files = [ - "AUTHORS", - "README.md", - "VERSION", - "lib/sbdb.rb", - "lib/sbdb/cursor.rb", - "lib/sbdb/db.rb", - "lib/sbdb/environment.rb", - "lib/sbdb/transaction.rb", - "lib/sbdb/weakhash.rb" - ] - s.homepage = %q{http://github.com/DenisKnauf/bdb} - s.require_paths = ["lib"] - s.rubygems_version = %q{1.3.7} - s.summary = %q{Simple Ruby Berkeley DB} - - if s.respond_to? :specification_version then - current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION - s.specification_version = 3 - - if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then - s.add_runtime_dependency(%q, [">= 0"]) - else - s.add_dependency(%q, [">= 0"]) - end - else - s.add_dependency(%q, [">= 0"]) - end -end - From bfe13fcce8eff93808e43c03d482e21728718ec9 Mon Sep 17 00:00:00 2001 From: Denis Knauf Date: Thu, 25 Aug 2011 13:23:38 +0200 Subject: [PATCH 08/17] weakhash entfernt. ref-gem --- .gitignore | 1 + lib/sbdb/db.rb | 6 +++- lib/sbdb/environment.rb | 2 +- lib/sbdb/weakhash.rb | 61 ----------------------------------------- 4 files changed, 7 insertions(+), 63 deletions(-) delete mode 100644 lib/sbdb/weakhash.rb diff --git a/.gitignore b/.gitignore index 486603e..d964a1f 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ pkg *.gem *.gemspec rdoc +*.rbc diff --git a/lib/sbdb/db.rb b/lib/sbdb/db.rb index 2da1a94..2a0d04a 100644 --- a/lib/sbdb/db.rb +++ b/lib/sbdb/db.rb @@ -60,7 +60,11 @@ module SBDB def _txn txn txn ||= @txn - txn && t.bdb_object + txn && txn.bdb_object + end + + def transaction flg = nil, &exe + block_given? ? home.transaction( flg, &exe) : home.transaction( flg) end # Arguments: diff --git a/lib/sbdb/environment.rb b/lib/sbdb/environment.rb index 9a6479e..0e2011b 100644 --- a/lib/sbdb/environment.rb +++ b/lib/sbdb/environment.rb @@ -61,7 +61,7 @@ module SBDB def initialize *args opts = ::Hash === args.last ? args.pop : {} opts = {:dir => args[0], :flags => args[1], :mode => args[2]}.update opts - @dbs, @env = WeakHash.new, Bdb::Env.new( 0) + @dbs, @env = Ref::WeakValueMap.new, Bdb::Env.new( 0) @env.log_config opts[:log_config], 1 if opts[:log_config] @env.lg_bsize = opts[:lg_bsize] if opts[:lg_bsize] @env.lg_max = opts[:lg_max] if opts[:lg_max] diff --git a/lib/sbdb/weakhash.rb b/lib/sbdb/weakhash.rb deleted file mode 100644 index f6e9d9c..0000000 --- a/lib/sbdb/weakhash.rb +++ /dev/null @@ -1,61 +0,0 @@ -module SBDB - -# See http://eigenclass.org/hiki/deferred-finalizers-in-Ruby -# Not threadsafe. - -class WeakHash - attr_reader :cache - def initialize cache = ::Hash.new - @cache = cache - @key_map = {} - @rev_cache = ::Hash.new{|h,k| h[k] = {}} - @reclaim_value = lambda do |value_id| - if @rev_cache.has_key? value_id - @rev_cache[value_id].each_key{|key| @cache.delete key} - @rev_cache.delete value_id - end - end - @reclaim_key = lambda do |key_id| - @cache.delete @key_map.delete(key_id) if @key_map.has_key? key_id - end - end - - def []= key, value - case key - when Fixnum, Symbol, true, false - key2 = key - else - key2 = key.dup - end - @rev_cache[value.object_id][key2] = true - @cache[key2] = value.object_id - @key_map[key.object_id] = key2 - - ObjectSpace.define_finalizer(value, @reclaim_value) - ObjectSpace.define_finalizer(key, @reclaim_key) - value - end - - def [] key - value_id = @cache[key] - return ObjectSpace._id2ref( value_id) unless value_id.nil? - nil - rescue RangeError - nil - end - - def each &e - @cache.each do |k, vid| - unless vid.nil? - obj = begin - ObjectSpace._id2ref vid - rescue RangeError - next - end - yield k, obj - end - end - end -end - -end From 6c686eb2d3cedb526c3299f0ca91362ed1c006b0 Mon Sep 17 00:00:00 2001 From: Denis Knauf Date: Thu, 25 Aug 2011 13:48:26 +0200 Subject: [PATCH 09/17] rubinius-compatible; ref.gem. README: INIT_TRANSACTION --- README.md | 25 +++++++++++++++---------- Rakefile | 1 + VERSION | 2 +- lib/sbdb.rb | 1 + 4 files changed, 18 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index ccf96c8..7459cc5 100644 --- a/README.md +++ b/README.md @@ -23,21 +23,22 @@ 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 + env = SBDB::Env.new 'newenv', SBDB::CREATE | SBDB::Env::INIT_TRANSACTION + db = env.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 + db['key'] # => 'value' + db.to_hash # => {'key'=>'value'} + db.map {|k, v| "k => v" } # => ["key => value"] + db.count # => 1 + db.each {|k,v| puts "#{k}: #{v}" } -SBDB::DB#each uses a SBDB::Cursor: +`SBDB::DB#each` uses a `SBDB::Cursor`: cursor = db.cursor - cursor.each {|k,v| puts "#{k}: ${v}" } + cursor.each {|k,v| puts "#{k}: #{v}" } **Don't forget to close everything, you've opened!** @@ -47,10 +48,14 @@ SBDB::DB#each uses a SBDB::Cursor: But you can use a *lambda* to ensure to close everything: - SBDB::Env.new( 'newenv', SBDB::CREATE) do |env| + SBDB::Env.new( 'newenv', SBDB::CREATE | SBDB::Env::INIT_TRANSACTION) 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. +`SBDB::DB#to_hash` creates a cursor and close it later. + +Tip: + + Signal.trap 'EXIT', env.method( :close) diff --git a/Rakefile b/Rakefile index 60d7e66..424d295 100644 --- a/Rakefile +++ b/Rakefile @@ -15,6 +15,7 @@ begin gem.files = %w[AUTHORS README.md VERSION lib/**/*.rb test/**/*.rb] gem.require_paths = %w[lib] gem.add_dependency 'bdb' + gem.add_dependency 'ref' end Jeweler::GemcutterTasks.new rescue LoadError diff --git a/VERSION b/VERSION index 3f543b7..2cfabea 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.0.10.1 +0.0.11 diff --git a/lib/sbdb.rb b/lib/sbdb.rb index d796a06..2b3ab6f 100644 --- a/lib/sbdb.rb +++ b/lib/sbdb.rb @@ -1,4 +1,5 @@ require 'bdb' +require 'ref' require 'sbdb/environment' require 'sbdb/db' require 'sbdb/cursor' From 676718c40ff156d19865ade38d87fd6ce7cf8a51 Mon Sep 17 00:00:00 2001 From: Ash Moran Date: Thu, 25 Aug 2011 06:16:55 +0800 Subject: [PATCH 10/17] Regenerate gemspec for version 0.0.10.1 --- am-sbdb.gemspec | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 am-sbdb.gemspec diff --git a/am-sbdb.gemspec b/am-sbdb.gemspec new file mode 100644 index 0000000..952f06e --- /dev/null +++ b/am-sbdb.gemspec @@ -0,0 +1,47 @@ +# Generated by jeweler +# DO NOT EDIT THIS FILE DIRECTLY +# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec' +# -*- encoding: utf-8 -*- + +Gem::Specification.new do |s| + s.name = %q{am-sbdb} + s.version = "0.0.10.1" + + s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version= + s.authors = [%q{Denis Knauf}] + s.date = %q{2011-08-24} + s.description = %q{Simple Ruby Berkeley DB wrapper library for bdb.} + s.email = %q{Denis.Knauf@gmail.com} + s.extra_rdoc_files = [ + "LICENSE", + "README.md" + ] + s.files = [ + "AUTHORS", + "README.md", + "VERSION", + "lib/sbdb.rb", + "lib/sbdb/cursor.rb", + "lib/sbdb/db.rb", + "lib/sbdb/environment.rb", + "lib/sbdb/transaction.rb", + "lib/sbdb/weakhash.rb" + ] + s.homepage = %q{http://github.com/ruby-bdb/sbdb} + s.require_paths = [%q{lib}] + s.rubygems_version = %q{1.8.9} + s.summary = %q{Simple Ruby Berkeley DB} + + if s.respond_to? :specification_version then + s.specification_version = 3 + + if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then + s.add_runtime_dependency(%q, [">= 0"]) + else + s.add_dependency(%q, [">= 0"]) + end + else + s.add_dependency(%q, [">= 0"]) + end +end + From 4700562b3ea87be6379aee43a982fcc0145de4fc Mon Sep 17 00:00:00 2001 From: Denis Knauf Date: Thu, 25 Aug 2011 19:55:48 +0800 Subject: [PATCH 11/17] gemspec removed --- am-sbdb.gemspec | 47 ----------------------------------------------- 1 file changed, 47 deletions(-) delete mode 100644 am-sbdb.gemspec diff --git a/am-sbdb.gemspec b/am-sbdb.gemspec deleted file mode 100644 index 952f06e..0000000 --- a/am-sbdb.gemspec +++ /dev/null @@ -1,47 +0,0 @@ -# Generated by jeweler -# DO NOT EDIT THIS FILE DIRECTLY -# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec' -# -*- encoding: utf-8 -*- - -Gem::Specification.new do |s| - s.name = %q{am-sbdb} - s.version = "0.0.10.1" - - s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version= - s.authors = [%q{Denis Knauf}] - s.date = %q{2011-08-24} - s.description = %q{Simple Ruby Berkeley DB wrapper library for bdb.} - s.email = %q{Denis.Knauf@gmail.com} - s.extra_rdoc_files = [ - "LICENSE", - "README.md" - ] - s.files = [ - "AUTHORS", - "README.md", - "VERSION", - "lib/sbdb.rb", - "lib/sbdb/cursor.rb", - "lib/sbdb/db.rb", - "lib/sbdb/environment.rb", - "lib/sbdb/transaction.rb", - "lib/sbdb/weakhash.rb" - ] - s.homepage = %q{http://github.com/ruby-bdb/sbdb} - s.require_paths = [%q{lib}] - s.rubygems_version = %q{1.8.9} - s.summary = %q{Simple Ruby Berkeley DB} - - if s.respond_to? :specification_version then - s.specification_version = 3 - - if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then - s.add_runtime_dependency(%q, [">= 0"]) - else - s.add_dependency(%q, [">= 0"]) - end - else - s.add_dependency(%q, [">= 0"]) - end -end - From 037544bdb53e51e22ed3aa4c47c1febd04dc41dc Mon Sep 17 00:00:00 2001 From: Andy Shipman Date: Thu, 25 Aug 2011 22:43:39 +0800 Subject: [PATCH 12/17] Add weakhash back in --- lib/sbdb/weakhash.rb | 59 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 lib/sbdb/weakhash.rb diff --git a/lib/sbdb/weakhash.rb b/lib/sbdb/weakhash.rb new file mode 100644 index 0000000..eb57ff0 --- /dev/null +++ b/lib/sbdb/weakhash.rb @@ -0,0 +1,59 @@ +module SBDB + # See http://eigenclass.org/hiki/deferred-finalizers-in-Ruby + # Not threadsafe. + class WeakHash + attr_reader :cache + def initialize cache = ::Hash.new + @cache = cache + @key_map = {} + @rev_cache = ::Hash.new { |h,k| h[k] = {} } + @reclaim_value = lambda do |value_id| + if @rev_cache.has_key? value_id + @rev_cache[value_id].each_key{ |key| @cache.delete key } + @rev_cache.delete value_id + end + end + @reclaim_key = lambda do |key_id| + @cache.delete @key_map.delete(key_id) if @key_map.has_key? key_id + end + end + + def []=(key, value) + case key + when Fixnum, Symbol, true, false + key2 = key + else + key2 = key.dup + end + @rev_cache[value.object_id][key2] = true + @cache[key2] = value.object_id + @key_map[key.object_id] = key2 + + ObjectSpace.define_finalizer(value, @reclaim_value) + ObjectSpace.define_finalizer(key, @reclaim_key) + value + end + + def [](key) + value_id = @cache[key] + return ObjectSpace._id2ref(value_id) unless value_id.nil? + nil + rescue RangeError + nil + end + + def each(&e) + @cache.each do |k, vid| + unless vid.nil? + obj = + begin + ObjectSpace._id2ref vid + rescue RangeError + next + end + yield k, obj + end + end + end + end +end From 50f610da4a4bdff30714e9d35acebbf9fe1f7e6e Mon Sep 17 00:00:00 2001 From: Ash Moran Date: Fri, 26 Aug 2011 00:01:04 +0800 Subject: [PATCH 13/17] Version bump to 0.0.12 --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index 2cfabea..9bbaee4 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.0.11 +0.0.12 \ No newline at end of file From 31021f703f4c2bb8c1e8fcef892226a0c3a0c3e2 Mon Sep 17 00:00:00 2001 From: Ash Moran Date: Fri, 26 Aug 2011 00:02:21 +0800 Subject: [PATCH 14/17] Specify minimum bdb gem dependency version --- Rakefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Rakefile b/Rakefile index 424d295..659c364 100644 --- a/Rakefile +++ b/Rakefile @@ -14,7 +14,7 @@ begin gem.authors = ["Denis Knauf"] gem.files = %w[AUTHORS README.md VERSION lib/**/*.rb test/**/*.rb] gem.require_paths = %w[lib] - gem.add_dependency 'bdb' + gem.add_dependency 'bdb', '>= 0.2.6.4' gem.add_dependency 'ref' end Jeweler::GemcutterTasks.new From 93cd84cd59f14da044aab56e0f19f93ebd3a3db8 Mon Sep 17 00:00:00 2001 From: Ash Moran Date: Fri, 26 Aug 2011 00:15:14 +0800 Subject: [PATCH 15/17] Bump version to 0.0.12.1 to bump bdb dependency to 0.2.6.5 --- Rakefile | 2 +- VERSION | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Rakefile b/Rakefile index 659c364..89416e7 100644 --- a/Rakefile +++ b/Rakefile @@ -14,7 +14,7 @@ begin gem.authors = ["Denis Knauf"] gem.files = %w[AUTHORS README.md VERSION lib/**/*.rb test/**/*.rb] gem.require_paths = %w[lib] - gem.add_dependency 'bdb', '>= 0.2.6.4' + gem.add_dependency 'bdb', '>= 0.2.6.5' gem.add_dependency 'ref' end Jeweler::GemcutterTasks.new diff --git a/VERSION b/VERSION index 9bbaee4..e5bc785 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.0.12 \ No newline at end of file +0.0.12.1 \ No newline at end of file From 4745db500c4a9dab0a0a17bfa124de6343efd74e Mon Sep 17 00:00:00 2001 From: Ash Moran Date: Fri, 26 Aug 2011 02:53:19 +0800 Subject: [PATCH 16/17] Remove the (erroneously re-added) weakref.rb file and the require line that was still including it (project now uses the ref gem) --- lib/sbdb/environment.rb | 1 - lib/sbdb/weakhash.rb | 59 ----------------------------------------- 2 files changed, 60 deletions(-) delete mode 100644 lib/sbdb/weakhash.rb diff --git a/lib/sbdb/environment.rb b/lib/sbdb/environment.rb index 0e2011b..71f5ef9 100644 --- a/lib/sbdb/environment.rb +++ b/lib/sbdb/environment.rb @@ -1,5 +1,4 @@ require 'bdb' -require 'sbdb/weakhash' require 'sbdb/db' require 'sbdb/transaction' diff --git a/lib/sbdb/weakhash.rb b/lib/sbdb/weakhash.rb deleted file mode 100644 index eb57ff0..0000000 --- a/lib/sbdb/weakhash.rb +++ /dev/null @@ -1,59 +0,0 @@ -module SBDB - # See http://eigenclass.org/hiki/deferred-finalizers-in-Ruby - # Not threadsafe. - class WeakHash - attr_reader :cache - def initialize cache = ::Hash.new - @cache = cache - @key_map = {} - @rev_cache = ::Hash.new { |h,k| h[k] = {} } - @reclaim_value = lambda do |value_id| - if @rev_cache.has_key? value_id - @rev_cache[value_id].each_key{ |key| @cache.delete key } - @rev_cache.delete value_id - end - end - @reclaim_key = lambda do |key_id| - @cache.delete @key_map.delete(key_id) if @key_map.has_key? key_id - end - end - - def []=(key, value) - case key - when Fixnum, Symbol, true, false - key2 = key - else - key2 = key.dup - end - @rev_cache[value.object_id][key2] = true - @cache[key2] = value.object_id - @key_map[key.object_id] = key2 - - ObjectSpace.define_finalizer(value, @reclaim_value) - ObjectSpace.define_finalizer(key, @reclaim_key) - value - end - - def [](key) - value_id = @cache[key] - return ObjectSpace._id2ref(value_id) unless value_id.nil? - nil - rescue RangeError - nil - end - - def each(&e) - @cache.each do |k, vid| - unless vid.nil? - obj = - begin - ObjectSpace._id2ref vid - rescue RangeError - next - end - yield k, obj - end - end - end - end -end From 50e2fbe843d63f48b4919c9a768771926a3171cd Mon Sep 17 00:00:00 2001 From: Ash Moran Date: Fri, 26 Aug 2011 02:54:13 +0800 Subject: [PATCH 17/17] Bump version to 0.0.12.2 --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index e5bc785..7e743eb 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.0.12.1 \ No newline at end of file +0.0.12.2 \ No newline at end of file