diff options
-rw-r--r-- | lib/metropolis.rb | 2 | ||||
-rw-r--r-- | lib/metropolis/common.rb | 8 | ||||
-rw-r--r-- | lib/metropolis/tc/hdb.rb | 10 |
3 files changed, 12 insertions, 8 deletions
diff --git a/lib/metropolis.rb b/lib/metropolis.rb index 96a2a6d..1bae3d3 100644 --- a/lib/metropolis.rb +++ b/lib/metropolis.rb @@ -8,7 +8,7 @@ module Metropolis def self.new(opts = {}) opts = opts.dup rv = Object.new - uri = URI.parse(opts[:uri]) + uri = opts[:uri] = URI.parse(opts[:uri]) case uri.scheme when 'tc' opts[:path_pattern] = uri.path diff --git a/lib/metropolis/common.rb b/lib/metropolis/common.rb index cdae590..c4efcf3 100644 --- a/lib/metropolis/common.rb +++ b/lib/metropolis/common.rb @@ -2,6 +2,14 @@ module Metropolis::Common include Rack::Utils # unescape + def setup(opts) + @uri = opts[:uri] + @headers = { 'Content-Type' => 'application/octet-stream' } + @headers.merge!(opts[:response_headers] || {}) + @nr_slots = opts[:nr_slots] || 3 + @readonly = !!opts[:readonly] + end + def r(code, body = nil) body ||= "#{HTTP_STATUS_CODES[code]}\n" [ code, diff --git a/lib/metropolis/tc/hdb.rb b/lib/metropolis/tc/hdb.rb index 871876d..ebd7a17 100644 --- a/lib/metropolis/tc/hdb.rb +++ b/lib/metropolis/tc/hdb.rb @@ -9,9 +9,7 @@ module Metropolis::TC::HDB include Metropolis::Common def setup(opts) - @headers = { 'Content-Type' => 'application/octet-stream' } - @headers.merge!(opts[:response_headers] || {}) - @nr_slots = opts[:nr_slots] || 3 + 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}" @@ -41,7 +39,7 @@ module Metropolis::TC::HDB @dbv = (0...@nr_slots).to_a.map do |slot| path = sprintf(path_pattern, slot) hdb = TCHDB.new - unless opts[:readonly] + unless @readonly hdb.open(path, TCHDB::OWRITER | TCHDB::OCREAT) or ex!(:open, hdb) if @optimize hdb.optimize(*@optimize) or ex!(:optimize, hdb) @@ -52,9 +50,7 @@ module Metropolis::TC::HDB end @rd_flags = TCHDB::OREADER @wr_flags = TCHDB::OWRITER - if opts[:readonly] - extend(RO) - end + extend(RO) if @readonly end |