Я только что нажал на гем под названием nil_be_gone , который дает вам опциональный объект, с которым вы можете обернуть объекты. Он реализует method_missing, чтобы проверить, имеет ли значение Optional значение nil, и, если это так, просто вернуть другое значение Optional, заключенное в ноль, в противном случае он вызывает метод объекта и переносит его снова.
nil_be_gone реализует bind
как and_then
, что позволяет вам связывать операции над необязательными типами, это методы возврата, которые извлекают значение из необязательного значения, а единичная операция, которая оборачивает объект в монаде, определяется self.from_value
.