我如何告诉Sinatra它是什么环境(开发,测试,生产)?

时间:2013-10-17 07:07:17

标签: ruby heroku rubygems sinatra

(免责声明:在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

2 个答案:

答案 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环境的方式。