Dove inserisco il codice in Sinatra (ruby web framework) che voglio eseguire una volta sola?

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

  •  06-07-2019
  •  | 
  •  

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
È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top