モデルに次の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
2 番目の引数を Integer 以外のものに置き換えるとうまくいくように見えますが、もちろん引数は Integer である必要があります... jRuby またはこれに統合した Java クラスのいずれかに問題があるのではないかと疑っています。