情况:
我正在运行一个Rails 3.1.3应用程序,它会加载一个sqlite3数据库并对其进行查询。标准的东西。 它在一个带有幻觉乘客的apache里面运行。 版本是sqlite3(GEM / 1.3.5),ruby 1.9.3-p0,sqlite3(libs / bin)3.6.12
问题:
sqlite3文件是从位于Rails App根目录之外的目录加载而可以通过单独的(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
是否存在强制重新连接文件,关闭并重新打开所有文件句柄的故障保护方法?
谢谢, 弗兰克
作为旁注:
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?
答案 0 :(得分:0)
回答我自己的问题:
ActiveRecord::Base.connection_pool.disconnect!
作品
但它断开了所有数据库......