safely do
# keep going if this code fails
end
例外は救助され、お気に入りのレポートサービスに自動的に報告されます。
開発環境とテスト環境では、例外が提起されているため、それらを修正できます。
続きを読む
この行をアプリケーションのGemfileに追加します。
gem "safely_block"
「ああ、いや、分析が検索を下げた」
safely { track_search ( params ) }
「1人の悪いユーザーのために、推奨事項が更新を停止しました」
users . each do | user |
safely ( context : { user_id : user . id } ) { update_recommendations ( user ) }
end
yolo
としてエイリアス
例外を除いて報告される追加のコンテキストを渡します
safely context : { user_id : 123 } do
# code
end
例外を返すためにデフォルト値を指定します
show_banner = safely ( default : true ) { show_banner_logic }
特定の例外を提起します
safely except : ActiveRecord :: RecordNotUnique do
# all other exceptions will be rescued
end
複数の例外クラスの配列を渡します。
特定の例外のみを救出します
safely only : ActiveRecord :: RecordNotUnique do
# all other exceptions will be raised
end
沈黙の例外
safely silence : ActiveRecord :: RecordNotUnique do
# code
end
スロットルレポート:
safely throttle : { limit : 10 , period : 1 . minute } do
# reports only first 10 exceptions each minute
end
注:スロットル制限はおおよそのプロセスであり、プロセスごとです。
さまざまなサービスに例外を報告します。
注:コンテキストはGoogle StackDriverおよびScout APMでサポートされていません
レポートのカスタマイズ:
Safely . report_exception_method = -> ( e ) { Rollbar . error ( e ) }
Railsを使用すると、これを初期イザーに追加できます。
デフォルトでは、例外メッセージには[safely]
が付いています。これにより、救助された例外を簡単に見つけることができます。これをオフにします:
Safely . tag = false
例外を手動で報告するには:
Safely . report_exception ( e )
ユーザーのプライバシーを保護するために、個人データを例外サービスに送信しないでください。敏感なフォームフィールドをフィルタリングし、ID(電子メールアドレスではない)を使用してユーザーを識別し、IPアドレスをマスクします。
Rollbarを使用すると、できます。
Rollbar . configure do | config |
config . person_id_method = "id" # default
config . scrub_fields |= [ :birthday ]
config . anonymize_user_ip = true
end
例外に取り組んでいる間、個人データを探して、必要に応じて修正してください。
Changelogを表示します
誰もがこのプロジェクトの改善を支援することをお勧めします。ここにあなたが助けることができるいくつかの方法があります:
開発とテストを開始するには:
git clone https://github.com/ankane/safely.git
cd safely
bundle install
bundle exec rake test