Ruby on Rails4にて、複数データベースとの接続を行う処理を記述しています。主となるデータベースはdatabase.ymlにて静的に指定するのですが、もう一方のデータベースはユーザが画面からホストアドレスやポート番号、データベース名を指定するため、該当のデータベースに接続できなかった場合のエラーを取得したいと考えています。
下記は端折ったコードで申し訳ないのですが...
「★ココ」の部分で指定したパラメータでデータベース接続の可否を判断するか、もしくは事前にパラメータに含まれるホストアドレス+ポート番号での接続可否、該当するデータベースの有無を判断するにはどうのようにしたら良いでしょうか?
ActiveRecord::ConnectionAdapters::ConnectionManagementからMysql2::Errorが発生するというところまでは判ったのですが、それをどう判定(コーディング)すれば良いのかが判りません。またエラー(Exception?)が発生した場合、後続の処理を飛ばすにはrescue内でreturnしてしまっても良いものなのか...この辺り、教示いただける方がおられましたら回答願えますでしょうか。
主たるデータベースはPostgrSQL、動的に指定するデータベースはMySQLの予定ですが、判定対象となるデータベースに拘らない汎用的な方法があれば良し、なければデータベースプロダクトに閉じた方法でも構いません。宜しくお願いいたします。
ruby
1class HogeBase < ActiveRecord::Base 2 self.abstract_class = true 3end 4 5class Fugafuga < HogeBase 6 self.table_name = :abcde 7end 8 9class AiueoController < ApplicationController 10 def index 11 db_params = params[:db] 12 begin 13 HogeBase.establish_connection db_params ←★ココ 14 rescue 15 @errmsg = "DB接続エラーだよん" 16 return 17 end 18 Fugafuga.all.each do |any| 19 p any.id 20 end 21 end 22end
あなたの回答
tips
プレビュー