現在、次のコードをテストしています。
def db_check
begin
schema_call = ActiveRecord::Base.establish_connection(
:adapter => 'mysql2',
:host => 'localhost',
:database => 'dev_db',
:username => 'dev_user',
:password => 'dev_pw').connection.execute("SELECT * FROM schema_migrations LIMIT 1")
if schema_call
render :status => 200, :file => "public/success.html"
else
render :status => 500, :file => "public/query_fail.html"
end
rescue Exception => e
puts "#{e.class} ;; #{e.message}"
logger.debug "#{e.class}"
render :status => 500, :file => "public/500.html"
end
end
最終的な目標は、MySQL サーバーを呼び出して、1) サーバーがまだ稼働しているかどうか、2) データベースが使用可能かどうかを確認することです。接続がうまくいかないとエラーになるので、コードをrescue
ブロックにまとめました。残念ながら、私が使用rescue Exception
しないようにアドバイスされていることを理解している を使用しても、ブラウザにMysql2::Errorメッセージが表示されます (また、rescue も試しMysql2:Error
ましたが、効果はありませんでした)。
でのエラー ログの重複は、rescue
追加情報を取得するための余分な試みですが、これまでのところ何も機能していません。このエラーをキャッチする方法を知っている人はいますか?
更新: また、追加のコンテキストとして、MySQL が現在実行されていない状態でコードをテストすると (DB サーバーがダウンしている場合)、次の結果が得られます。
Mysql2::エラー ソケット '/var/run/mysqld/mysqld.sock' を介してローカル MySQL サーバーに接続できない (2)
サーバーがオフになっていることを考えると、これは部分的に理にかなっていますが、なぜエラーが解決されないのかまだわかりません。