我已經成功地寫了一點Sinatra應用程序,並已成功部署在heroku上。Sinatra動態配置環境
但是我希望在本地計算機上以開發模式運行該應用程序,並且我希望在heroku上將其推送到遠程存儲庫時,它的生產模式。
目前我可以實現任意一個選項。當我改變我的config.ru爲以下值:
require 'rubygems'
require 'sinatra'
require 'sinatra/reloader'
require "./calc.rb"
enable :logging
set :environment, :development
set :port, 4567
我能夠通過ruby config.ru
本地運行(在端口4567)。當我將config.ru更改爲:
require 'rubygems'
require 'sinatra'
require 'sinatra/reloader'
require "./calc.rb"
enable :logging
set :environment, :production
set :port, 4567
run Sinatra::Application
我可以讓它在Heroku上運行(在端口80上)。
但我不能在開發和生產中使用相同的配置。
我想有這樣的:
ruby config.ru dev
發展和ruby config.ru
進行生產。
其他信息:
當我嘗試我的本地機器上運行的生產config.ru我得到:
$ ruby config.ru
(eval):2:in `method_missing': undefined method `run' for main:Object (NoMethodError)
from (eval):4:in `__send__'
from (eval):4:in `method_missing'
from config.ru:10
RACK_ENV的東西不僅僅是windows,同樣的情況也會發生爲我在我的Mac。有趣的是,去年似乎有一個[修復](https://github.com/rack/rack/commit/32de46c139e10dc2261ca63a3049e98e310d0781)機架,但它並沒有成爲寶石。 Rack確實將RACK_ENV設置爲你使用'-E'指定的值,默認爲'開發',sinatra應該看到。 – matt 2011-04-29 17:04:37