ruby - sinatra config.ru: ¿para qué sirve el bloque de configuración?
configuration passenger (1)
Estoy usando Sinatra con Apache y Phusion-Passenger con estilo "clásico":
# config.ru
require ''sinatra''
configure do
....
end
require ''./app''
run Sinatra::Application
Quiero definir algunas cosas. ¿Cuál es la diferencia entre definirlo dentro del bloque de configuración o afuera?
# config.ru
require ''sinatra''
# A) Defining logger here
rack = File.new("logs/rack.log", "a+")
use Rack::CommonLogger, rack
# B) Global variables here
LOGGER = Logger.new(...)
# C) Gem configuration here
DataMapper::Property::Boolean.allow_nil(false)
configure do
# A) Or defining logger here?
rack = File.new("logs/rack.log", "a+")
use Rack::CommonLogger, rack
# B) Or global variables here?
LOGGER = Logger.new(...)
# C) Or gem configuration here?
DataMapper::Property::Boolean.allow_nil(false)
....
end
require ''./app''
run Sinatra::Application
¿Existen algunas reglas generales sobre qué se debe hacer afuera y qué se debe hacer adentro? ¿Cuál es la diferencia? Probé ambas variantes, y ambas parecían funcionar igual de bien.
Sé que configure
se puede utilizar para reaccionar en un entorno como este:
configure :development do
....
end
Por eso es útil para diferentes configuraciones de entorno. Este caso de uso es claro, pero ¿qué pasa con las configuraciones generales para cada entorno? ¿Dónde los pongo? ¿Es solo una cuestión de estilo?
Esto es, en primer lugar, una cuestión de entornos y, en segundo lugar, una cuestión de estilo. No hay diferencia donde pones tus configuraciones.
Hace que su código sea mucho más legible (IMHO) si lo coloca en un bloque. También le permitirá agregar opciones basadas en el entorno que luego colocará en sus propios bloques respectivos.
Para resumir, depende de usted :)