В моей модели реализован следующий код method_missing
:
# class Thought
def self.method_missing(method_id, *arguments, &block)
if $CLIENT.respond_to?(method_id)
$CLIENT.send(method_id, *arguments, &block)
# Do some stuff with it
else
super
end
end
$CLIENT
- это глобальный объект.Обратите внимание, что это method_missing
для класса , а не экземпляра.
Я попробовал следующее в скрипте / консоли:
>> $CLIENT.respond_to?(:my_thoughts)
=> true
>> $CLIENT.send(:my_thoughts, 'bob', 5)
=> #<#<Class:01xe229be>:0x241391>
>> Thought.send(:my_thoughts, 'bob', 5)
ArgumentError: wrong # of arguments(1 for 2)
from [filepath]:50:in `method_missing'
from (irb):4
Есть ли что-то до боли очевидноеЯ здесь скучаю?Я запускаю это на Rails 2.3.8 и jRuby, если это имеет значение.
Редактировать : Это смущает меня еще больше:
>> Thought.send(:my_thoughts, 'bob', 5, 5)
ArgumentError: wrong # of arguments(3 for 2)
from [filepath]:50:in `method_missing'
from (irb):23
Замена второгокажется, что аргумент с чем-то отличным от Integer работает, но, конечно, аргумент должен быть Integer ... Теперь я подозреваю проблему в jRuby или Java-классах, которые я в нее интегрировал.