2016年2月15日 星期一

Rails on Rack 


rake is a wrapper for wrap up the http response and request, provide a unite API for server, framework and middleware software

  • Rack::Sendfile
設定伺服器的 X-Sendfile 標頭(header)。使用 config.action_dispatch.x_sendfile_header 來設定。

  • ActionDispatch::Static
用來決定是否由 Rails 提供靜態 assets。使用 config.serve_static_assets 選項來啟用或禁用(true 啟用)

  • Rack::Lock
將 env["rack.multithread"] 設為 false ,則可將應用程式包在 Mutex 裡。

  • ActiveSupport::Cache::Strategy::LocalCache::Middleware
用來做 memory cache。注意,此 cache 不是線程安全的。

  • Rack::Runtime
設定 X-Runtime 標頭,並記錄請求的執行時間(秒為單位)。

  • Rack::MethodOverride
如有設定 params[:_method],則允許可以重寫方法。這個 Middleware 實作了 HTTP PUT 與 DELETE 方法。

  • ActionDispatch::RequestId
在響應中產生獨立的 X-Request-Id 標頭,並啟用 ActionDispatch::Request#uuid 方法。

  • Rails::Rack::Logger
請求開始時通知 Log,請求結束寫入 Log。

  • ActionDispatch::ShowExceptions
Rescue 任何由應用程式拋出的異常,並呼叫處理異常的程式,將異常以適合的格式顯示給使用者。

  • ActionDispatch::DebugExceptions
負責記錄異常,並在請求來自本機時,顯示除錯頁面。

  • ActionDispatch::RemoteIp
檢查 IP 欺騙攻擊。

  • ActionDispatch::Reloader
準備與清除回呼。主要在開發模式下用來重新加載程式碼。

  • ActionDispatch::Callbacks
處理請求前,先執行預備好的回呼。

  • ActiveRecord::Migration::CheckPending
檢查是否有未執行的遷移檔案,有的話拋出 PendingMigrationError 錯誤。

  • ActiveRecord::ConnectionAdapters::ConnectionManagement
每個請求結束後,若 rack.test 不為真,則將作用中的連線清除。

  • ActiveRecord::QueryCache
啟用 Active Record 的查詢快取。

  • ActionDispatch::Cookies
幫請求設定 Cookie。

  • ActionDispatch::Session::CookieStore
負責把 Session 存到 Cookie。

  • ActionDispatch::Flash
config.action_controller.session_store 設定為真時,設定提示訊息的鍵。

  • ActionDispatch::ParamsParser
解析請求的參數放到 params Hash 裡。

  • ActionDispatch::Head
將 HTTP HEAD 請求轉換成 GET 請求處理。

  • Rack::ConditionalGet
給伺服器加入 HTTP 的 Conditional GET 支持,頁面沒有變化,就不會回傳響應。

  • Rack::ETag

為所有字串 Body 加上 ETag 標頭,用來驗證快取。 

沒有留言:

張貼留言