Sinatra config.ru: для чего нужен блок configure? - программирование
Подтвердить что ты не робот

Sinatra config.ru: для чего нужен блок configure?

Я использую Sinatra с Apache и Phusion-Passenger с "классическим" стилем:

# config.ru
require 'sinatra'

configure do
    ....
end

require './app'

run Sinatra::Application

Я хочу определить некоторые вещи. В чем разница между его определением внутри блока configure или снаружи?

# 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

Существуют ли какие-то общие правила, что нужно делать за пределами и что делать внутри? В чем разница? Я тестировал оба варианта, и оба, казалось, работали одинаково хорошо.

Я знаю, что configure может использоваться для реакции на такую ​​среду:

configure :development do
    ....
end

Поэтому он полезен для разных конфигураций среды. Этот пример использования понятен, но как насчет общих конфигураций для каждой среды? Где я их помещаю? Это только вопрос стиля?

4b9b3361

Ответ 1

Это в первую очередь вопрос об окружающей среде и, во-вторых, вопрос стиля. Нет никакой разницы, когда вы ставите свои конфигурации.

Это делает ваш код более читаемым (IMHO), если вы помещаете его в блок. Также он позволит вам добавлять параметры, основанные на среде, которые затем помещаются в соответствующие блоки.

Подводя итог, это зависит от вас:)