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

时间:2009-11-28 14:35:37

标签: ruby sinatra

我不知道这是一个红宝石问题还是一个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

4 个答案:

答案 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的子类,因此在这种情况下使用类变量似乎是合适的。