Я не знаю ни одного хорошего способа сделать это. Это обсуждение уместно, однако:
http://www.mail-archive.com/datamapper@googlegroups.com/msg02894.html
По-видимому, можно повторно открыть соединение, используя DataMapper.setup()
, но кажется, что закрытие соединений обрабатывается автоматически.
Однако, возможно, эти наблюдения помогут:
Можно сохранить ссылку на адаптер, например,
a = DataMapper.setup(:default, "sqlite:db/development.sqlite3")
Просмотр этого объекта показывает, что путь сохраняется, подразумевая, что он предназначен для этого конкретного соединения, а не для адаптера SQLite в целом или такого:
p a
#<DataMapper::Adapters::SqliteAdapter:0x00000001aa9258 @name=:default, @options={"scheme"=>"sqlite", "user"=>nil, "password"=>nil, "host"=>nil, "port"=>nil, "query"=>nil, "fragment"=>nil, "adapter"=>"sqlite3", "path"=>"db/development.sqlite3"}, @resource_naming_convention=DataMapper::NamingConventions::Resource::UnderscoredAndPluralized, @field_naming_convention=DataMapper::NamingConventions::Field::Underscored, @normalized_uri=sqlite3:db/development.sqlite3?scheme=sqlite&user=&password=&host=&port=&query=&fragment=&adapter=sqlite3&path=db/development.sqlite3>
Предположительно, это можно каким-то образом пометить для сборки мусора или что-то в этом роде (просто установит ли он nil
работать?)
В DataMapper::Adapters::DataObjectsAdapter
также есть метод close_connection()
, но он защищен, и я не уверен, можно ли его использовать или как.
Надеюсь, что это дает некоторые указатели!