Если не очень важно, чтобы вы выдавали исключение для небулевых значений, я думаю, было бы более элегантно привести значение к логическому значению, например, с помощью !!
:
baz = !! options.fetch(:baz, true)
Таким образом, клиентский код может передавать любое истинное или ложное значение, но вы все равно можете быть уверены, что значение, с которым вы работаете, является правильным логическим значением. Вы также можете использовать троичный оператор (например, baz = options.fetch(:baz, true) ? true : false
, если считаете, что !!
неясно.