Я не знаю ни одного хорошего способа сделать это. Тем не менее, это обсуждение уместно:
http://www.mail-archive.com/[email protected]/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()
, но он защищен, и я не уверен, можно ли его использовать и как.
Надеюсь, это дает некоторые указатели!
person
tiredpixel
schedule
13.07.2011