Where do I put code in Sinatra (ruby web framework) that I just want to execute once?
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
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.