¿Dónde pongo el código en Sinatra (ruby web framework) que solo quiero ejecutar una vez?

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

  •  06-07-2019
  •  | 
  •  

Pregunta

No sé si esta es una pregunta de rubí o una pregunta de Sinatra, porque soy nuevo en ambas. El siguiente código no funciona, y entiendo por qué, porque la primera variable my_variable es local en su bloque. Simplemente no sé la sintaxis para hacerlo bien.

require 'rubygems'
require 'sinatra'

configure do
    my_variable = "world"
end

get '/' do
    "Hello " + my_variable
end

EDIT1: lo siguiente funciona, pero supongo que estoy confundido sobre el propósito correcto del bloque de configuración.

require 'rubygems'
require 'sinatra'

my_variable = "world"

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

Solución

require 'rubygems'
require 'sinatra'

set :my_variable, "world"

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

Otros consejos

Configurar bloque es solo para la configuración de la aplicación relacionada. Si eso es lo que es, debe encapsularlo correctamente:

require 'sinatra'

configure do
  set :my_option, "world"
end

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

Otra forma es:

require 'rubygems'
require 'sinatra'

@my_variable="world"

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

Establecería una variable de clase, por ejemplo. @@ my_variable : dentro del bloque de configuración. El bloque de configuración existe para el código que desea ejecutar al inicio, por lo que establecer su variable tiene sentido. Su aplicación Sinatra es una subclase de Sinatra :: Base , por lo que parece apropiado utilizar una variable de clase en esta situación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top