我已经成功地写了一点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