diff options
author | Eric Wong <normalperson@yhbt.net> | 2010-12-06 15:43:46 -0800 |
---|---|---|
committer | Eric Wong <normalperson@yhbt.net> | 2010-12-06 15:43:46 -0800 |
commit | 88fa90b7f039f62962cc8d11031446412b951be2 (patch) | |
tree | 04c2d961f6e3e41b069f074d7b93e1d91d8d716e /lib/metropolis/tc/hdb.rb | |
parent | 74ca34be2d54809822447ff185d88d83fcd566ae (diff) | |
download | metropolis-88fa90b7f039f62962cc8d11031446412b951be2.tar.gz |
allow easier, single-file options for TC and TDB
Most (other) users only need a single file, even though my primary use of this is for multiple files.
Diffstat (limited to 'lib/metropolis/tc/hdb.rb')
-rw-r--r-- | lib/metropolis/tc/hdb.rb | 19 |
1 files changed, 8 insertions, 11 deletions
diff --git a/lib/metropolis/tc/hdb.rb b/lib/metropolis/tc/hdb.rb index 97e9050..d0833f8 100644 --- a/lib/metropolis/tc/hdb.rb +++ b/lib/metropolis/tc/hdb.rb @@ -11,16 +11,12 @@ module Metropolis::TC::HDB def setup(opts) super - path_pattern = opts[:path_pattern] - path_pattern.scan(/%\d*x/).size == 1 or - raise ArgumentError, "only one '/%\d*x/' may appear in #{path_pattern}" - @rd_flags = TCHDB::OREADER @wr_flags = TCHDB::OWRITER @optimize = nil - if query = opts[:query] - case query['rdlock'] + if @query + case @query['rdlock'] when 'true', nil when 'false' @rd_flags |= TCHDB::ONOLCK @@ -28,7 +24,7 @@ module Metropolis::TC::HDB raise ArgumentError, "'rdlock' must be 'true' or 'false'" end - case query['wrlock'] + case @query['wrlock'] when 'true', nil when 'false' @wr_flags |= TCHDB::ONOLCK @@ -38,11 +34,11 @@ module Metropolis::TC::HDB flags = 0 @optimize = %w(bnum apow fpow).map do |x| - v = query[x] + v = @query[x] v ? v.to_i : nil end - case large = query['large'] + case large = @query['large'] when 'false', nil when 'true' flags |= TCHDB::TLARGE @@ -50,7 +46,7 @@ module Metropolis::TC::HDB raise ArgumentError, "invalid 'large' value: #{large}" end - case compress = query['compress'] + case compress = @query['compress'] when nil when 'deflate', 'bzip', 'tcbs' flags |= TCHDB.const_get("T#{compress.upcase}") @@ -59,8 +55,9 @@ module Metropolis::TC::HDB end @optimize << flags end + @nr_slots = 1 unless @path_pattern @dbv = (0...@nr_slots).to_a.map do |slot| - path = sprintf(path_pattern, slot) + path = @path_pattern ? sprintf(@path_pattern, slot) : @uri.path hdb = TCHDB.new unless @readonly hdb.open(path, TCHDB::OWRITER | TCHDB::OCREAT) or ex!(:open, hdb) |