相关疑难解决方法(0)

Sinatra动态配置环境

我成功编写了一个小的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)

ruby heroku sinatra

18
推荐指数
2
解决办法
3万
查看次数

我如何告诉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)

ruby rubygems heroku sinatra

6
推荐指数
2
解决办法
5297
查看次数

标签 统计

heroku ×2

ruby ×2

sinatra ×2

rubygems ×1