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

Dar*_*tos 6 ruby rubygems heroku 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
Run Code Online (Sandbox Code Playgroud)

小智 12

Sinatra环境与正在加载的生产组内的gem没有任何关系.这些是分开的,彼此不兼容.

Sinatra从RACK_ENV环境变量中获取环境,只需启动它即可RACK_ENV=production rackup

Bundler的工作方式略有不同,您可以选择在运行bundle install时应排除哪些组: bundle install --without production


Vin*_*sil 5

Sinatra 使用APP_ENV环境变量。正如您所提到的,您也可以通过设置明确设置它。

指定部署环境的符号;通常设置为 :development、:test 或 :production 之一。:environment 默认为 APP_ENV 环境变量 (ENV['APP_ENV']) 的值,或 :development 当没有设置 APP_ENV 环境变量时。

这就是你告诉 Sinatra 环境的方式。