Ситуация:
У меня запущено приложение Rails 3.1.3, которое загружает базу данных sqlite3 и запрашивает ее. Стандартные вещи.
Он работает внутри апача с пассажиром.
Версии: sqlite3 (GEM / 1.3.5), ruby 1.9.3-p0, sqlite3 (libs / bin) 3.6.12
Проблема:
Файл sqlite3 загружается из каталога, который находится за пределами корня приложения Rails, и может обновляться с помощью отдельного (SVN) процесса
Что я хочу сделать, так это перезагружать файл каждые пять минут (что легко).
Но как я могу подключиться к БД (файлу) через пять минут в Rails?
Что я пробовал:
Внутри my_model.rb:
if time_to_reload
self.connection.reconnect!
self.establish_connection
end
или
if time_to_reload
self.connection.disconnect!
self.connection.reconnect!
end
Я попробовал почти все их комбинации, но пока безуспешно.
Я получаю SQLite3::BusyException: database is locked
или prepare called on a closed database
Существует ли отказоустойчивый способ принудительного восстановления соединения с файлом, закрытия и повторного открытия всех файловых дескрипторов?
Спасибо,
Frank
В качестве обозначения:
1.9.3-p0-perf :006 > MyModel.connection.disconnect!
=> #<SQLite3::Database:0x0000010474f220>
1.9.3-p0-perf :007 > MyModel.connected?
=> true
1.9.3-p0-perf :008 > WAT?