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

2023-12-20 15:28 更新

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

require 'sinatra/base'

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

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

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

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

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

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


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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)