Rails チュートリアルを(12章まで)進めた
内容的には11章の延長みたいな章だった。
初出ではないけれど、今回はコールバックメソッドに感銘を受けた。
コールバックメソッド
「before_actionってrubyの仕組み?railsの仕組み?」と疑問に思って調べてみたところ、railsの仕組みらしい事がわかった。 「modelのbeforeなんたらと言い、言語仕様に無いのにどんな魔法を使って実現してるんだ?」…と思ったけど、たぶんControllerの場合はルーティングの際に仕掛けを仕込んでいて、Modelについてはそもそも共通メソッドのsave等に限定してるから実現可能なのか。ということはControllerのメソッドを直接叩いたら作動しないのかな。
だんだんとrubyがメタプログラミングが強いと言われている事に、実感が追いついてきた。
言語仕様だけではなく、文化的なところもあるのかも知れない。
追記
コールバックメソッドの仕組みは「言語仕様に無い」と思ってたけど、もしかしたらちょっと違うかもしれない。
rubyに標準で備わっているalias_methodの仕組み(を応用したalias_method_chain)を使っているのかも知れない。
もしくはこっち?
うーん分からない。
コールバックメソッドの正体について、もうちょっと詳しく調べてみよう。