Вы получаете бесконечную рекурсию в вашем method_missing
, потому что ваше регулярное выражение не совсем верно.Попробуйте изменить строку:
if name =~ /^dollar|yen|euros|rupee|$/
на:
if name =~ /^dollar|yen|euros|rupee$/
Эта дополнительная |
заставляет что-либо совпадать с регулярным выражением, поэтому любой другой метод повторяется с постоянно расширяющимся суффиксомs
.
В этом случае похоже, что puts
, кажется, пытается вызвать to_ary
, когда пытается определить тип своего аргумента.Я не совсем уверен, почему он не просто использует respond_to?
- он глубоко во внутренностях Си, поэтому я не знаю, что происходит.