Похоже, что что-то в самой консоли Rails использует Array#push
и будет использовать вашу исправленную версию с обезьяной, как только вы определите это.
Стандартная версия push
определена так, чтобы принимать столько аргументов, сколько ей передано, однако ваша замещающая версия принимает только один параметр, obj
и поэтому не совместима.
Это приводит к упомянутой вами ошибке wrong number of arguments (given 5, expected 1)
.
Чтобы заменить push
на совместимую версию, вы должны использовать *
( оператор "splat") Ruby для определения метода, который может принимать любое количество аргументов:
def push(*obj)
# implementation here
end
Замена push
методом, который просто возвращает ничего не делая, вероятно, вызовет немало проблем. Возможно, уточните вопрос с некоторыми подробностями о том, что вы пытаетесь сделать.