Where do I put code in Sinatra (ruby web framework) that I just want to execute once?

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

  •  06-07-2019
  •  | 
  •  

Question

I don't know if this is a ruby question or a Sinatra question, because I'm new to both. The following code does not work, and I understand why, because the first my_variable is local to its block. I just don't know the syntax for getting it right.

require 'rubygems'
require 'sinatra'

configure do
    my_variable = "world"
end

get '/' do
    "Hello " + my_variable
end

EDIT1 - the following works, but then I guess I'm confused about the proper purpose of the configure block.

require 'rubygems'
require 'sinatra'

my_variable = "world"

get '/' do
    "Hello " + my_variable
end
Was it helpful?

Solution

require 'rubygems'
require 'sinatra'

set :my_variable, "world"

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

OTHER TIPS

Configure block is just to app configuration related. If that's what it is, you should encapsulate it proper:

require 'sinatra'

configure do
  set :my_option, "world"
end

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

One other way is :

require 'rubygems'
require 'sinatra'

@my_variable="world"

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

I would set a class variable — eg. @@my_variable — inside the configure block. The configure block exists for code you want to run at start up, so setting your variable their makes sense. Your Sinatra application is a subclass of Sinatra::Base, so using a class variable in this situation seems appropriate.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top