(免责声明:在Heroku上部署Sinatra的新功能。)
我看过http://www.sinatrarb.com/configuration.html并告诉我set :environment, :production
。我的问题是,如何指定它:“在Heroku中,将环境设置为生产,否则保持测试/开发。”
此外,即使在放行set :environment, :production
之后,我认为它不起作用,因为当我尝试rackup
本地应用时,它仍在运行(当我知道(或者我认为我)知道它不应该因为我没有在我的电脑上安装postgres。)
Gemfile
group :production do
gem 'dm-postgres-adapter'
end
group :development, :test do
gem 'dm-sqlite-adapter', "~> 1.2.0"
end
答案 0 :(得分:12)
Sinatra环境与正在加载的生产组内的gem没有任何关系。这些是分开的,彼此不相同。
Sinatra从RACK_ENV
环境变量中获取环境,只需使用RACK_ENV=production rackup
Bundler的工作方式略有不同,您可以选择在运行bundle install时应排除哪些组:bundle install --without production
答案 1 :(得分:1)
Sinatra使用APP_ENV
环境变量。正如您提到的,您也可以通过设置来明确设置它。
用于指定部署环境的符号;通常设置为:development,:test或:production之一。 :: environment默认为APP_ENV环境变量(ENV ['APP_ENV'])的值,或:未设置APP_ENV环境变量时为:development的值。
这就是您告诉Sinatra环境的方式。