Sinatra Sinatra::Base - 中間件,程序庫和模塊化應(yīng)用

2023-12-20 15:28 更新

把你的應(yīng)用定義在頂層,對于微型應(yīng)用這會工作得很好,但是在構(gòu)建可復(fù)用的組件時候會帶來客觀的不利,比如構(gòu)建 Rack 中間件,Rails metal,帶有服務(wù)器組件的簡單程序庫,或者甚至是 Sinatra 擴展。頂層的 DSL 污染了 Object 命名空間,并假定了一個微型應(yīng)用風(fēng)格的配置 (例如,單一的應(yīng)用文件, ./public 和 ./views 目錄,日志,異常細節(jié)頁面,等等)。這時應(yīng)該讓 Sinatra::Base 走到臺前了:

require 'sinatra/base'

class MyApp < Sinatra::Base
  set :sessions, true
  set :foo, 'bar'

  get '/' do
    'Hello world!'
  end
end

Sinatra::Base 子類可用的方法實際上就是通過頂層 DSL 可用的方法。大部分頂層應(yīng)用可以通過兩個改變轉(zhuǎn)換成 Sinatra::Base 組件:

你的文件應(yīng)當(dāng)引入 sinatra/base 而不是 sinatra; 否則,所有的 Sinatra 的 DSL 方法將會被引進到 主命名空間。

把你的應(yīng)用的路由,錯誤處理,過濾器和選項放在 一個 Sinatra::Base 的子類中。

+Sinatra::Base+ 是一張白紙。大部分的選項默認是禁用的,包含內(nèi)置的服務(wù)器。參見 選項和配置 查看可用選項的具體細節(jié)和他們的行為。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號