Engine, Applicationはクラスメソッドの呼び出しに失敗した場合は、インスタンスメソッドを実行する
railsアプリのconfig.ruを見ると"run XXX::Application"となっていて、でもRails::Applicationにはcall(env)がなくてってので、どうして動くのか理解できませんでしたが、ソースコードを見ると
class Railtie autoload :Configurable, "rails/railtie/configurable" ... class << self def inherited(base) unless base.abstract_railtie? base.send(:include, Railtie::Configurable) ... end end ...
となっていて、ようするにXXX::ApplicationはConfigurableをincludeしています。Configurableはだいたい次のコードのConfigurableをextendしたような効果があります。それで、rackがXXX::Application.call(env)しても動いてくれるのです。
最後にちょっと言語の知識をメモを。「rubyはメソッドが見つからないとき、method_missingを呼ぶきまりになっている」ようです。