safely do
# keep going if this code fails
end
Les exceptions sont sauvées et signalées automatiquement à votre service de rapport préféré.
Dans les environnements de développement et de test, des exceptions sont soulevées afin que vous puissiez les réparer.
En savoir plus
Ajoutez cette ligne à Gemfile de votre application:
gem "safely_block"
"Oh non, les analyses ont fait la recherche"
safely { track_search ( params ) }
"Les recommandations ont cessé de mettre à jour à cause d'un mauvais utilisateur"
users . each do | user |
safely ( context : { user_id : user . id } ) { update_recommendations ( user ) }
end
Aussi aliasé comme yolo
Passez un contexte supplémentaire à signaler avec des exceptions
safely context : { user_id : 123 } do
# code
end
Spécifiez une valeur par défaut pour retourner les exceptions
show_banner = safely ( default : true ) { show_banner_logic }
Augmenter des exceptions spécifiques
safely except : ActiveRecord :: RecordNotUnique do
# all other exceptions will be rescued
end
Passez un tableau pour plusieurs classes d'exception.
Sauver uniquement des exceptions spécifiques
safely only : ActiveRecord :: RecordNotUnique do
# all other exceptions will be raised
end
Exceptions de silence
safely silence : ActiveRecord :: RecordNotUnique do
# code
end
Représentation des gaz avec:
safely throttle : { limit : 10 , period : 1 . minute } do
# reports only first 10 exceptions each minute
end
Remarque: La limite de papillon est approximative et par processus.
Rapporte des exceptions à une variété de services hors de la boîte.
Remarque: le contexte n'est pas pris en charge avec Google Stackdriver et Scout APM
Personnalisez les rapports avec:
Safely . report_exception_method = -> ( e ) { Rollbar . error ( e ) }
Avec Rails, vous pouvez l'ajouter dans un initialiseur.
Par défaut, les messages d'exception sont préfixés avec [safely]
. Cela facilite les exceptions sauvées. Éteignez cela avec:
Safely . tag = false
Pour signaler les exceptions manuellement:
Safely . report_exception ( e )
Pour protéger la confidentialité de vos utilisateurs, n'envoyez pas de données personnelles aux services d'exception. Filtrez des champs de formulaire sensible, utilisez des ID (pas des adresses e-mail) pour identifier les utilisateurs et masquer les adresses IP.
Avec Rollbar, vous pouvez faire:
Rollbar . configure do | config |
config . person_id_method = "id" # default
config . scrub_fields |= [ :birthday ]
config . anonymize_user_ip = true
end
Tout en travaillant sur des exceptions, soyez à la recherche de données personnelles et corrigez au besoin.
Voir le changelog
Tout le monde est encouragé à améliorer ce projet. Voici quelques façons d'aider:
Pour commencer avec le développement et les tests:
git clone https://github.com/ankane/safely.git
cd safely
bundle install
bundle exec rake test