Пример, который вы приводите, проблематичен для ruby-debug. ruby-debug имеет ограничение, заключающееся в том, что он останавливается только при событиях «line» оператора, а вызов «debugger» является последним оператором блока. Поэтому в приведенном вами примере к тому времени, когда отладчик останавливается, вы больше не находитесь в блоке «должна быть возможность отладки», а x больше не существует.
Один обходной путь, который программисты, похоже, используют немного, - это поместить какое-то утверждение после «отладчика», но до конца.
В следующем воплощении rbdbgr (для YARV Ruby 1.9 с патчами) вы можете остановиться перед возвращением из блока.