我不知道这是一个红宝石问题还是一个Sinatra问题,因为我对两者都不熟悉。以下代码不起作用,我理解为什么,因为第一个my_variable是其块的本地。我只是不知道正确的语法。
require 'rubygems'
require 'sinatra'
configure do
my_variable = "world"
end
get '/' do
"Hello " + my_variable
end
EDIT1 - 以下工作,但我想我对配置块的正确用途感到困惑。
require 'rubygems'
require 'sinatra'
my_variable = "world"
get '/' do
"Hello " + my_variable
end
答案 0 :(得分:7)
require 'rubygems'
require 'sinatra'
set :my_variable, "world"
get '/' do
"Hello " + settings.my_variable
end
答案 1 :(得分:3)
配置块只是与app配置相关。如果是这样的话,你应该把它封装好:
require 'sinatra'
configure do
set :my_option, "world"
end
get '/' do
"Hello #{options.my_option}"
end
答案 2 :(得分:0)
另一种方式是:
require 'rubygems'
require 'sinatra'
@my_variable="world"
get '/' do
"Hello " + @my_variable
end
答案 3 :(得分:0)
我会设置一个类变量 - 例如。 @@my_variable
- 在配置块内。配置块存在于您想要在启动时运行的代码,因此设置变量是有意义的。您的Sinatra应用程序是Sinatra::Base
的子类,因此在这种情况下使用类变量似乎是合适的。