method_missing
railsのARとかでこんな感じのコードを開くことがある.
class Entry < ActiveRecord::Base end entry = Entry.new entry.name = "name" entry.bio = "bio" entry.save
ここで疑問なのがnameとbioメソッド.どこで定義されているか検討もつかない.調べた結果.Objectのmethod_missingというのを使っているらしい.
class Object
ということで実験.こんな感じのクラスを書く.
class Test def method_missing(name, *args) puts "#{name},#{args}" end end
irbから実行
t = Test.new t.hoge(12) #name=>hoge,args=>[12] t.huga #name=>hoge,args=>[] t.foo("str1", "str2") #name=>foo,args=>["str1", "str2"]