我在哪里将代码放在我想要执行一次的Sinatra(ruby web框架)中?
题
我不知道这是一个红宝石问题还是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
解决方案
require 'rubygems'
require 'sinatra'
set :my_variable, "world"
get '/' do
"Hello " + settings.my_variable
end
其他提示
配置块只是与app配置相关。如果是这样的话,你应该把它封装好:
require 'sinatra'
configure do
set :my_option, "world"
end
get '/' do
"Hello #{options.my_option}"
end
另一种方式是:
require 'rubygems'
require 'sinatra'
@my_variable="world"
get '/' do
"Hello " + @my_variable
end
我会设置一个类变量—例如。 @@ my_variable
—在配置块内。配置块存在于您想要在启动时运行的代码,因此设置变量是有意义的。您的Sinatra应用程序是 Sinatra :: Base
的子类,因此在这种情况下使用类变量似乎是合适的。
不隶属于 StackOverflow