Où est-ce que je place le code dans Sinatra (framework web ruby) que je veux exécuter une fois?
Question
Je ne sais pas s'il s'agit d'une question de rubis ou d'une question de Sinatra, car je suis novice dans les deux domaines. Le code suivant ne fonctionne pas, et je comprends pourquoi, car la première variable my_variable est locale à son bloc. Je ne connais tout simplement pas la syntaxe pour bien faire les choses.
require 'rubygems'
require 'sinatra'
configure do
my_variable = "world"
end
get '/' do
"Hello " + my_variable
end
EDIT1 - les travaux suivants fonctionnent, mais je suppose que je suis confus quant à l'objectif du bloc de configuration.
require 'rubygems'
require 'sinatra'
my_variable = "world"
get '/' do
"Hello " + my_variable
end
La solution
require 'rubygems'
require 'sinatra'
set :my_variable, "world"
get '/' do
"Hello " + settings.my_variable
end
Autres conseils
Le bloc de configuration concerne uniquement la configuration de l'application. Si c'est ce que c'est, vous devriez l'encapsuler correctement:
require 'sinatra'
configure do
set :my_option, "world"
end
get '/' do
"Hello #{options.my_option}"
end
Une autre façon est:
require 'rubygems'
require 'sinatra'
@my_variable="world"
get '/' do
"Hello " + @my_variable
end
Je définirais une variable de classe - par exemple. @@ ma_variable
- dans le bloc de configuration. Le bloc de configuration existe pour le code que vous souhaitez exécuter au démarrage, il est donc judicieux de définir votre variable. Votre application Sinatra est une sous-classe de Sinatra :: Base
. Il est donc approprié d'utiliser une variable de classe dans cette situation.