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

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

Ответы [ 4 ]

7 голосов
/ 28 ноября 2009
require 'rubygems'
require 'sinatra'

set :my_variable, "world"

get '/' do
  "Hello " + settings.my_variable
end
3 голосов
/ 30 сентября 2011

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

require 'sinatra'

configure do
  set :my_option, "world"
end

get '/' do
  "Hello #{options.my_option}"
end
0 голосов
/ 29 декабря 2009

Я бы установил переменную класса - например. @@my_variable - внутри блока конфигурации. Блок конфигурации существует для кода, который вы хотите запустить при запуске, поэтому установка вашей переменной имеет смысл. Ваше приложение Sinatra является подклассом Sinatra::Base, поэтому использование переменной класса в этой ситуации представляется целесообразным.

0 голосов
/ 01 декабря 2009

Еще один способ:

require 'rubygems'
require 'sinatra'

@my_variable="world"

get '/' do
  "Hello " + @my_variable
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...