Ошибка не вызвана is_a?
"невозможно преобразовать строку в целое число (TypeError)" вызвано этой строкой:
@name = other_args['name']
other_args - это массив в вашем примере кода, а не хеш - вот почему ruby пытается преобразовать «имя» в целое число (и терпит неудачу)
Если вы вызываете метод с синтаксисом аргумента ключевого слова, он работает так, как если бы все аргументы ключевого слова были объединены в хеш, который передается как последний аргумент вызова метода.
Обратите внимание на разницу в объявлениях методов:
Ваш:
def initialize(programid,*other_args)
Субба Рао
def initialize(*other_args)
Это аккуратное упрощение - превратить все аргументы в один хэш, убрать первый аргумент (который, как предполагает код, у вас есть). Затем укажите пустой хэш по умолчанию в качестве альтернативы, если вы не указали никаких других аргументов:
other_args.first || {}