From c83191a02e383db5bd167819225ec80a377534ab Mon Sep 17 00:00:00 2001 From: Sergei Zimakov Date: Mon, 2 Jun 2008 02:33:28 +0400 Subject: [PATCH] Fix for in-memory Sqlite DB when setup with Hash --- lib/data_mapper/adapters/sqlite3_adapter.rb | 1 + spec/integration/sqlite3_adapter_spec.rb | 10 +++++++++- 2 files changed, 10 insertions(+), 1 deletions(-) diff --git a/lib/data_mapper/adapters/sqlite3_adapter.rb b/lib/data_mapper/adapters/sqlite3_adapter.rb index 8e07e7d..6b8cc50 100644 --- a/lib/data_mapper/adapters/sqlite3_adapter.rb +++ b/lib/data_mapper/adapters/sqlite3_adapter.rb @@ -34,6 +34,7 @@ module DataMapper protected def normalize_uri(uri_or_options) + return Addressable::URI.parse('sqlite3::memory:') if uri_or_options.respond_to?(:[]) && uri_or_options[:database] == ':memory:' uri = super uri.path = File.join(Dir.pwd, File.dirname(uri.path), File.basename(uri.path)) unless File.exists?(uri.path) or uri.path == ':memory:' uri diff --git a/spec/integration/sqlite3_adapter_spec.rb b/spec/integration/sqlite3_adapter_spec.rb index c7020f9..fa5cef3 100644 --- a/spec/integration/sqlite3_adapter_spec.rb +++ b/spec/integration/sqlite3_adapter_spec.rb @@ -66,12 +66,20 @@ if HAS_SQLITE3 adapter = repository(:sqlite3newfile).adapter adapter.uri.path.should == File.join(Dir.pwd, file) end + end - it "should contain have a path of just :memory: when using in memory databases" do + describe "handling in-memory database" do + it "should recognize String on DataMapper#setup" do DataMapper.setup(:sqlite3memory, "sqlite3::memory:") adapter = repository(:sqlite3memory).adapter adapter.uri.path.should == ':memory:' end + + it "should recognize Hash on DataMapper#setup" do + DataMapper.setup(:sqlite3memory, {:adapter => 'sqlite3', :database => ':memory:'}) + adapter = repository(:sqlite3memory).adapter + adapter.uri.path.should == ':memory:' + end end describe "handling transactions" do -- 1.5.3.7