Куда я помещаю код в Sinatra (веб-фреймворк ruby), который я хочу выполнить один раз?

StackOverflow https://stackoverflow.com/questions/1812645

  •  06-07-2019
  •  | 
  •  

Вопрос

Я не знаю, является ли это рубиновым вопросом или вопросом Синатры, потому что я новичок в обоих. Следующий код не работает, и я понимаю, почему, потому что первая переменная 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 , поэтому использование переменной класса в этой ситуации представляется целесообразным.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top