Dove inserisco il codice in Sinatra (ruby web framework) che voglio eseguire una volta sola?
Domanda
Non so se questa è una domanda rubino o una domanda Sinatra, perché sono nuovo per entrambi. Il codice seguente non funziona e capisco perché, perché la prima variabile my_variable è locale al suo blocco. Semplicemente non conosco la sintassi per farlo bene.
require 'rubygems'
require 'sinatra'
configure do
my_variable = "world"
end
get '/' do
"Hello " + my_variable
end
EDIT1 - funziona come segue, ma poi credo di essere confuso circa lo scopo corretto del blocco configure.
require 'rubygems'
require 'sinatra'
my_variable = "world"
get '/' do
"Hello " + my_variable
end
Soluzione
require 'rubygems'
require 'sinatra'
set :my_variable, "world"
get '/' do
"Hello " + settings.my_variable
end
Altri suggerimenti
Configura blocco è solo relativo alla configurazione dell'app. Se è quello che è, dovresti incapsularlo nel modo giusto:
require 'sinatra'
configure do
set :my_option, "world"
end
get '/' do
"Hello #{options.my_option}"
end
Un altro modo è:
require 'rubygems'
require 'sinatra'
@my_variable="world"
get '/' do
"Hello " + @my_variable
end
Vorrei impostare una variabile di classe - ad es. @@ my_variable
- all'interno del blocco configure. Il blocco di configurazione esiste per il codice che si desidera eseguire all'avvio, quindi l'impostazione della variabile ha un senso. L'applicazione Sinatra è una sottoclasse di Sinatra :: Base
, quindi l'utilizzo di una variabile di classe in questa situazione sembra appropriato.