Onde posso colocar o código em Sinatra (framework web Ruby) que eu só quero executar uma vez?

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

  •  06-07-2019
  •  | 
  •  

Pergunta

Eu não sei se esta é uma pergunta rubi ou uma pergunta Sinatra, porque eu sou novo para ambos. O código a seguir não funciona, e eu entendo por que, porque a primeira my_variable é local para seu bloco. Eu só não sei a sintaxe para fazê-lo direito.

require 'rubygems'
require 'sinatra'

configure do
    my_variable = "world"
end

get '/' do
    "Hello " + my_variable
end

EDIT1 -. As seguintes obras, mas então eu acho que estou confuso sobre o objetivo adequado do bloco configure

require 'rubygems'
require 'sinatra'

my_variable = "world"

get '/' do
    "Hello " + my_variable
end
Foi útil?

Solução

require 'rubygems'
require 'sinatra'

set :my_variable, "world"

get '/' do
  "Hello " + settings.my_variable
end

Outras dicas

Configurar o bloco é apenas para aplicativo de configuração relacionados. Se isso é o que é, você deve compactá-lo adequado:

require 'sinatra'

configure do
  set :my_option, "world"
end

get '/' do
  "Hello #{options.my_option}"
end

Uma outra maneira é:

require 'rubygems'
require 'sinatra'

@my_variable="world"

get '/' do
  "Hello " + @my_variable
end

Gostaria de definir uma variável de classe - por exemplo. @@my_variable - dentro do bloco configure. O bloco configure existe para o código que você deseja executar no arranque, assim, definir a variável de seu sentido marcas. Sua aplicação Sinatra é uma subclasse de Sinatra::Base, portanto, usando uma variável de classe nesta situação parece apropriada.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top