Où est-ce que je place le code dans Sinatra (framework web ruby) que je veux exécuter une fois?

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

  •  06-07-2019
  •  | 
  •  

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
Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top