github / github/scientist

Ignoring specific exceptions

Abierto
#67 2 comentarios 1 reacción 0 asignados Ver en GitHub
Lenguaje dominante
Ruby
Estrellas
7.8k
Forks
505
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

Currently observation _values_ and not _observation objects_ are being passed to `ignore`. This means it's not possible to ignore transient exceptions that occur in either candidate or control. When an exception occurs, `nil` is passed as value to `ignore` for that behavior.

Example:

```ruby
e = Scientist::Experiment.new "foo"
e.use { rand > 0.001 ? 42 : raise SomeConnectionTimedOut.new }
e.try { rand > 0.001 ? 42 : raise SomeConnectionTimedOut.new }
e.ignore do |control, candidate|
# control/candidate is nil if exception occurred in that behavior
end
```

It would be great if `ignore` received an observation object instead of only the observation value. That would allow examining the exception value.

Example:

```ruby
# Proposed behavior! This is currently not possible.
ignore do |control, candidate|
control.exception.is_a?(SomeConnectionTimedOut) ||
candidate.exception.is_a?(SomeConnectionTimedOut)
end
```

I currently work around the above issue by rescuing inside `try`/`use` and return a sentinel value -- it's a terrible hack though. Would you accept a PR implementing this?

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.