Aptana Studioの練習 ActiverScaffoldの動作解析(Search編) 続き

Aptana Studioの練習 ActiverScaffoldの動作解析(Search編) 続き

続きを書く前に、1件訂正。
最初にジャンプして位置を見失った行は、どうも

  active_scaffold :store do |config|

みたいです。この行でステップオーバーすると、一気に前回記事のスタック位置で止まります。

ブレークポイント配置にまた失敗

…再開したはずが、同じくactionpackの行にブレークポイントを置こうとしてやっぱり失敗。
そうかーデバッグ実行中にブレークポイントの状態を、もしかして変更できない?
可能性あるなあ。VB.NETなら出来るんだけど。VisualStudioが偉大ということかしら。

という訳で、またもjavaw.exe→ruby.exeの順でプロセス強制終了。
あんまりやると壊れるよね。

今回はステップリターンで素直に戻る

ちょっとずつ目視で確認しながら、ステップリターンを繰り返して・・・ディスパッチの箇所まで戻る。
controllerオブジェクト(StoreController)が見事に取得されています。

    # requests (EOFError and ArgumentError).
    def dispatch(cgi = nil, session_options = ActionController::CgiRequest::DEFAULT_SESSION_OPTIONS, output = $stdout)
      controller = nil
      if cgi ||= new_cgi(output)
        request, response = ActionController::CgiRequest.new(cgi, session_options), ActionController::CgiResponse.new(cgi)
        prepare_application
        controller = ActionController::Routing::Routes.recognize(request)
        controller.process(request, response).out(output)
      end
    rescue Exception => exception  # errors from CGI dispatch
      failsafe_response(output, '500 Internal Server Error', exception) do
        controller ||= (ApplicationController rescue ActionController::Base)
        controller.process_with_exception(request, response, exception).out(output)
      end
    ensure
      # Do not give a failsafe response here.
      reset_after_dispatch
    end

上のソースのうち

        controller = ActionController::Routing::Routes.recognize(request)
        controller.process(request, response).out(output)

の上の行がコントローラーの宣言と取得、下の行がそのコントローラーが実際にrequestに従いresponseを返し、なんらかのoutputを返す、という内容と推測しました。
とりあえず、ステップオーバーして先にoutputの内容を把握することにします。
…いかん、outputの内容は<0x530d6d0>


"">"">"">"">"">"">"">"">"""">"">"">"">"">"">"">"">"">"">"">"">"">"""">"""">""''''''''&&&&&&&&&&&&&&&&&&&






<"""""""""">""""




<><><><><>




<<






<






<<>>""