Куда я помещаю код в Sinatra (веб-фреймворк ruby), который я хочу выполнить один раз?
Вопрос
Я не знаю, является ли это рубиновым вопросом или вопросом Синатры, потому что я новичок в обоих. Следующий код не работает, и я понимаю, почему, потому что первая переменная my_variable является локальной для ее блока. Я просто не знаю синтаксис, чтобы понять это правильно.
require 'rubygems'
require 'sinatra'
configure do
my_variable = "world"
end
get '/' do
"Hello " + my_variable
end
EDIT1 - следующее работает, но потом, я думаю, я запутался в правильном назначении блока конфигурации.
require 'rubygems'
require 'sinatra'
my_variable = "world"
get '/' do
"Hello " + my_variable
end
Решение
require 'rubygems'
require 'sinatra'
set :my_variable, "world"
get '/' do
"Hello " + settings.my_variable
end
Другие советы
Конфигурирование блока относится только к конфигурации приложения. Если это то, что нужно, вы должны правильно его инкапсулировать:
require 'sinatra'
configure do
set :my_option, "world"
end
get '/' do
"Hello #{options.my_option}"
end
Еще один способ:
require 'rubygems'
require 'sinatra'
@my_variable="world"
get '/' do
"Hello " + @my_variable
end
Я бы установил переменную класса & # 8212; например. @@ my_variable
& # 8212; внутри блока конфигурации. Блок конфигурации существует для кода, который вы хотите запустить при запуске, поэтому установка вашей переменной имеет смысл. Ваше приложение Sinatra является подклассом Sinatra :: Base
, поэтому использование переменной класса в этой ситуации представляется целесообразным.