2012-02-23 9 views
0

状況を変更したときにDBをsqlite3のために再接続:Railsの:.sqlite3ファイルの基礎となること

私はsqlite3のDBをロードし、それをクエリのRails 3.1.3アプリを実行しています。標準的なもの。 phusionの乗客とapacheの内部で実行されます。 バージョン(GEM/1.3.5)sqlite3のある、ルビー1.9.3-p0と、sqlite3の(LIBS/binに)3.6.12

問題:

はsqlite3のファイルはそのディレクトリからロードされRailsのアプリケーションルートの外にあるとは別々の(SVN)プロセス

を介して更新することができます私は何をしたい(簡単です)5分ごとにファイルをリロードです。 しかし、5分後にRailsでDB(ファイル)を再接続できますか?私が試した何

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

自分の質問に答えるために:

ActiveRecord::Base.connection_pool.disconnect! 

に動作します。しかし、それはすべてのデータベースを切断

を...

関連する問題