W3Cschool
恭喜您成為首批注冊(cè)用戶(hù)
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
有兩種方式運(yùn)行一個(gè)模塊化應(yīng)用,使用 run! 來(lái)運(yùn)行:
# my_app.rb
require 'sinatra/base'
class MyApp < Sinatra::Base
# ... app code here ...
# start the server if ruby file executed directly
run! if app_file == $0
end
運(yùn)行:
ruby my_app.rb
或者使用一個(gè) config.ru,允許你使用任何 Rack 處理器:
# config.ru
require './my_app'
run MyApp
運(yùn)行:
rackup -p 4567
使用 config.ru 運(yùn)行傳統(tǒng)方式的應(yīng)用
編寫(xiě)你的應(yīng)用:
# app.rb
require 'sinatra'
get '/' do
'Hello world!'
end
加入相應(yīng)的 config.ru:
require './app'
run Sinatra::Application
什么時(shí)候用 config.ru?
以下情況你可能需要使用 config.ru:
你并不需要切換到 config.ru 僅僅因?yàn)槟闱袚Q到模塊化方式,你同樣不需要切換到模塊化方式,僅僅因?yàn)橐\(yùn)行 config.ru. 把 Sinatra 當(dāng)成中間件來(lái)使用
不僅 Sinatra 有能力使用其他的 Rack 中間件,任何 Sinatra 應(yīng)用程序都可以反過(guò)來(lái)自身被當(dāng)作中間件,被加在任何 Rack 端點(diǎn)前面。這個(gè)端點(diǎn)可以是任何 Sinatra 應(yīng)用,或者任何基于 Rack 的應(yīng)用程序 (Rails/Ramaze/Camping/…)。
require 'sinatra/base'
class LoginScreen < Sinatra::Base
enable :sessions
get('/login') { haml :login }
post('/login') do
if params[:name] = 'admin' and params[:password] = 'admin'
session['user_name'] = params[:name]
else
redirect '/login'
end
end
end
class MyApp < Sinatra::Base
# 在前置過(guò)濾器前運(yùn)行中間件
use LoginScreen
before do
unless session['user_name']
halt "Access denied, please <a href='/login'>login</a>."
end
end
get('/') { "Hello #{session['user_name']}." }
end
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話(huà):173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: