思いつくままプログラミングネタを書き殴ります。RailsでPostgreSQLのストアードプロシージャの例外コードを受けるPostgreSQLのストアードプロシージャで例外を出した時に、素のままではRailsではエラーコードが受け取れません。RailsというかRubyのpgというドライバーがデフォルトでは受け取らないようになっています。pgを直接扱っている場合には、簡単に設定できるのですがRailsでは一苦労いります。initializersにドライバーと例外に手を入れるコードを書きます。endend使い方は以下の通り。endend例外eはActiveRecord::StatementInvalidのインスタンスでoriginal_exceptionに本当の例外PG::ServerErrorを持っています。PG::ServerErrorはPG::Resultのインスタンスresultを持っていて、ここのエラーコードが含まれています。エラーメッセージは以下の通りです。pl_exec.c:3068アプリケーションとしてはエラーコードだけ欲しいので、PG::Resultに手を入れてerror_codeでメッセージだけを取るようにメソッドを追加しています。(12/28)PostgreSQLとRubyを組み合わせてブラックリストチェックの速度を測ってみた。