He escrito con éxito una pequeña aplicación de Sinatra y ya la implementé con éxito en heroku.Entornos de configuración de Sinatra sobre la marcha
Sin embargo, quiero ejecutar esa aplicación en modo de desarrollo en mi computadora local y quiero tener su modo de producción en heroku una vez que lo empuje al repositorio remoto.
Actualmente puedo lograr cualquiera de estas opciones. Cuando cambio mi config.ru a los siguientes valores:
require 'rubygems'
require 'sinatra'
require 'sinatra/reloader'
require "./calc.rb"
enable :logging
set :environment, :development
set :port, 4567
soy capaz de ejecutar de forma local (en el puerto 4567) a través de ruby config.ru
. Cuando cambio el config.ru a esto:
require 'rubygems'
require 'sinatra'
require 'sinatra/reloader'
require "./calc.rb"
enable :logging
set :environment, :production
set :port, 4567
run Sinatra::Application
soy capaz de conseguir que se ejecute en Heroku (en el puerto 80).
Pero no puedo usar la misma configuración para el desarrollo y la producción.
me gustaría tener algo como:
ruby config.ru dev
para el desarrollo y para la producción de ruby config.ru
.
Información adicional:
Cuando trato de ejecutar el config.ru producción en mi máquina local me sale:
$ 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
El RACK_ENV no es solo windows, pasa lo mismo para mí en mi mac. Curiosamente, parece haber un [arreglo] (https://github.com/rack/rack/commit/32de46c139e10dc2261ca63a3049e98e310d0781) en rack del año pasado, pero no ha llegado a la gema. Rack ajusta RACK_ENV a lo que especifique con ''E' y se predetermina a 'desarrollo' y sinatra debería ver eso. – matt