diff options
author | Eric Wong <normalperson@yhbt.net> | 2010-11-22 15:36:54 -0800 |
---|---|---|
committer | Eric Wong <normalperson@yhbt.net> | 2010-11-22 19:56:05 -0800 |
commit | 5eb8bf5e005d0d800af0c7e5e2dfd6b2526dd218 (patch) | |
tree | e1665fd589f13174a6ff0919946cc96e9308772d /lib/metropolis.rb | |
download | metropolis-5eb8bf5e005d0d800af0c7e5e2dfd6b2526dd218.tar.gz |
initial TokyoCabinet hash database support
Basically working, for now
Diffstat (limited to 'lib/metropolis.rb')
-rw-r--r-- | lib/metropolis.rb | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/lib/metropolis.rb b/lib/metropolis.rb new file mode 100644 index 0000000..987040d --- /dev/null +++ b/lib/metropolis.rb @@ -0,0 +1,28 @@ +# -*- encoding: binary -*- +require 'rack' +require 'uri' + +module Metropolis + autoload :TokyoCabinet, 'metropolis/tokyocabinet' + + def self.new(opts = {}) + opts = opts.dup + rv = Object.new + uri = URI.parse(opts[:uri]) + case uri.scheme + when 'tc' + opts[:path_pattern] = uri.path + opts[:query] = Rack::Utils.parse_query(uri.query) if uri.query + case ext = File.extname(uri.path) + when '.tch' + rv.extend Metropolis::TokyoCabinet::HDB + else + raise ArgumentError, "unsupported suffix: #{ext}" + end + else + raise ArgumentError, "unsupported URI scheme: #{uri.scheme}" + end + rv.setup(opts) + rv + end +end |