2013-01-18 10 views
15

Sto utilizzando Sinatra con Apache e Phusion-passeggeri con lo stile "classico":sinatra config.ru: a cosa serve il blocco di configurazione?

# config.ru 
require 'sinatra' 

configure do 
    .... 
end 

require './app' 

run Sinatra::Application 

voglio definire alcune cose. Qual è la differenza tra la definizione all'interno del blocco di configurazione o all'esterno?

# 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 

Ci sono alcune regole generali che cosa dovrebbe essere fatto fuori e cosa dovrebbe essere fatto all'interno? Qual è la differenza? Ho provato entrambe le varianti, ed entrambe sembravano funzionare altrettanto bene.

so configure può essere utilizzato per reagire ambiente come questo:

configure :development do 
    .... 
end 

Quindi è utile per diverse configurazioni di ambiente. Questo caso d'uso è chiaro, ma che dire delle configurazioni generali per ogni ambiente? Dove li metto? È solo una questione di stile?

risposta

9

Questo è in primo luogo una questione di ambienti e in secondo luogo una questione di stile. Non c'è alcuna differenza in cui si inseriscono le configurazioni.

Rende il codice molto più leggibile (IMHO) se lo si inserisce in un blocco. Inoltre ti permetterà di aggiungere opzioni basate sull'ambiente che poi inserirai nei rispettivi blocchi.

Per riassumere, tocca a voi :)

+2

Ho appena trovato [l'origine] (http://rubydoc.info/gems/sinatra/1.3.3/Sinatra/Base.configure), e in realtà non fa altro che cedere il blocco a se stesso come argomento. Quindi è solo una questione di stile. – Markus