В Sinatra я не могу создавать глобальные переменные, которым присваиваются значения только один раз за время существования приложения. Я что-то пропустил? Мой упрощенный код выглядит так:
require 'rubygems' if RUBY_VERSION < "1.9"
require 'sinatra/base'
class WebApp < Sinatra::Base
@a = 1
before do
@b = 2
end
get '/' do
puts @a, @b
"#{@a}, #{@b}"
end
end
WebApp.run!
В результате
nil
2
в терминале и ,2
в браузере.
Если я попытаюсь ввести @a = 1
в метод initialize
, я получаю сообщение об ошибке в строке WebApp.run!
.
Мне кажется, что я что-то упускаю, потому что, если у меня не может быть глобальных переменных, как я могу загрузить большие данные во время создания приложения?
before do
, кажется, вызывается каждый раз, когда поступает запрос со стороны клиента.