ja ja ja en ja en ja ja ja ja ja en ja ja ja ja en ja ja ja ja ja ja es fa en en ja en ja ja ja ja ja en ja en ja ja en en nl ja nb ja ja nb ja ja en ja ja en ja ja fr ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja cv es es ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja
エラー通知用のウェブサービス Airbrake の ruby 用プラグイン airbrake の README を一部和訳したメモを発掘したので載せておきます。
airbrake は exception_notification とは違い同種のエラーであれば複数回発生しても通知は一回だけ送られるのと、web上にエラー内容がまとまってくれるのは良い点です。ただ値段に見合っているかはちょっとわからないです。とりあえず miuchee では airbrake を使っています。
基本的には、APIキーとかの設定をしておけば Rails が例外を吐いたときに rack middleware 層で例外をキャッチして、airbrake に通知するらしい。ただ普通の Rails アプリはコントローラ中で rescue_from などを使って例外をキャッチして「エラーが発生しました」みたいな画面を出すようにしているので、例外は middleware まで届かない。そのような場合は下記のように明示的に airbrake に例外を送るようにする。
昔の rails にあった rescue_actionに相当するメソッド rescue_action_in_public_without_airbrake(exception) というのも用意されているらしい。
Airbrake.configure do |config| ... config.rescue_rake_exceptions = true end
ユーザにエラーを通知する
500.html の一部を指定した方法で差し替える機能があって、そこで error_id を表示させてユーザから通知させるようなものが作れる。詳細は省略。
airbrake はログインユーザの情報も取得して表示できる。デフォルトでは current_user と current_member で取得できるインスタンスを「ログインユーザ」としている。(両方あるときは current_user優先)。
他のメソッド名使いたければ alias_method すればおk。
デフォルトでは下記の属性を取得する
下記のようにしてカスタム出来る
Airbrake.configure do |config| # collect only user ids config.user_attributes = [:id] # ["id"] also works end
設定すると airbrake との通信を非同期で行うことが出来る。thread 使ったり、Resque や Sidekiq 使ったりできるそうな。詳細は省略。
新しくデプロイしたときに、それまで発生していた例外を全て resolved にできる。
capistrano を使っているなら deploy.rb に下記を追加すればそれだけでデプロイの通知が出来る
require 'airbrake/capistrano
capistrano 使ってないなら下記の rake タスクを実行する
rake airbrake:deploy TO=#{rails_env} REVISION=#{current_revision} REPO=#{repository} USER=#{local_user}
Airbrake.nofity には例外オブジェクト以外にもいろいろ渡せる。
begin params = { # params that you pass to a method that can throw an exception } my_unpredicable_method(params) rescue => e Airbrake.notify_or_ignore( :error_class => "Special Error", :error_message => "Special Error: #{e.message}", :parameters => params ) end
willnet 2012-10-21 16:02
ginza.rb 第1回を開催して strong_parameters のソースコードを読んだ
7月16日(火)に ginza.rb 第1回を開催しました。 Ginza.rb 第1回…
より良い bundle open としての reditor
以前、bundler で管理している gem のソースをすぐに読み始める…
pry-rails が追加してくれるコマンド3つ
pry-rails は、登場した頃は単純にrails consoleしたときに pry…
Rails4.0に含まれる strong_parameters について
注意 このエントリは急いで書いたので間違いが含まれている可能…
さくらVPSにインストールした jenkins を設定する
さくらVPSにjenkinsをインストールする - willnet.in の続きで…
« リーダブルコードを読んだ minitest と capybara で rails3 の integ… »
id:willnet はてなブログPro
べんりで楽しいwebサービスをたくさん作りたい
読者です 読者をやめる 読者になる 読者になる
@netwillnetをフォロー
失敗したテストのログだけを出力するぞ
iCARE Dev Meetup #34で登壇しました
`Thread.current[:hoge]`はスレッドローカル変数を参照していると思いきや実際はファイバーローカル変数だった