我在哪里将代码放在我想要执行一次的Sinatra(ruby web框架)中?

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

  •  06-07-2019
  •  | 
  •  

我不知道这是一个红宝石问题还是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 的子类,因此在这种情况下使用类变量似乎是合适的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top