我成功编写了一个小的Sinatra应用程序,并已成功部署在heroku上.
但是,我想在我的本地计算机上以开发模式运行该应用程序,并且我希望在将它推送到远程存储库后在heroku上具有生产模式.
目前我可以实现其中一个选项.当我将config.ru更改为以下值时:
require 'rubygems'
require 'sinatra'
require 'sinatra/reloader'
require "./calc.rb"
enable :logging
set :environment, :development
set :port, 4567
Run Code Online (Sandbox Code Playgroud)
我可以通过本地(在端口4567上)运行它ruby config.ru.当我将config.ru更改为:
require 'rubygems'
require 'sinatra'
require 'sinatra/reloader'
require "./calc.rb"
enable :logging
set :environment, :production
set :port, 4567
run Sinatra::Application
Run Code Online (Sandbox Code Playgroud)
我能够让它在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
Run Code Online (Sandbox Code Playgroud) (免责声明:在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)