我是新來紅寶石,學習Sinatra。通過要求'sinatra'
創建Sinatra站點並直接設置路由非常簡單並且有很好的文檔記錄,通過要求'sinatra/base'
並編寫一個繼承自'Sinatra::Base
'的類來創建應用程序,雖然還比較容易,但其記錄很差(可能因爲這是Sinatra最近的一個特色)。通過Sinatra應用程序將選項傳遞給機架
這就是我正在做的。我在Sinatra部分沒有太多麻煩,但是我在rackup/thin/server部分遇到了一些麻煩。顯然,有兩種部署應用程序的方法:使用Sinatra本身(使用run!
方法)並使用機架文件(通常爲config.ru
)。
使用Sinatra的run!
方法非常直觀,並且像魅力一樣工作,但顯然如果我想在heroku上部署我的應用程序,它不起作用。事實上,我在GitHub上遇到的幾乎所有的Sinatra應用程序都使用config.ru
文件。
使用rackup文件可能同樣直觀,但我無法理解如何將選項從Sinatra應用程序傳遞到服務器(ir:端口)。我試圖合併選項rackup的默認選項數組:從應用程序類中設置選項
MyApp::App.set :port, 4567
MyApp::App.set :run, false
MyApp::App.set :env, :production
run MyApp::App
:
module MyApp
class App < Sinatra::Base
set :port, 4567
set :run, false
set :env, :production
# ...
# config.ru
require 'app'
run MyApp::App
所有直接添加選項,應用
MyApp::App.default_options.merge!(
:run => false,
:env => :production,
:port => 4567
)
run MyApp::App
上述方法失敗了,無論是通過顯示錯誤消息還是隻考慮了任何選項。那麼在使用Rackup文件時,有沒有辦法通過Sinatra應用程序將選項傳遞給rackup/thin/sever?或者問題中的選項應該通過命令行選項直接傳遞給rackup/thin/sever?
至於解決問題的參考,這裏是小西納特拉應用我建:https://github.com/AzizLight/Wiki/
感謝很多:) – 2010-12-14 09:06:10