Sinatra 应用/类 变量域
每个 Sinatra 应用相当与 Sinatra::Base 的一个子类。如果你在使用顶层 DSL(require 'sinatra'),那么这个类就是 Sinatra::Application,或者这个类就是你显式创建的子类。在类层面,你具有的方法类似于 get 或者 before,但是你不能访问 request 对象或者 session, 因为对于所有的请求,只有单一的应用类。
通过 set 创建的选项是类层面的方法:
class MyApp < Sinatra::Base
# 嘿,我在应用变量域!
set :foo, 42
foo # => 42
get '/foo' do
# 嘿,我不再处于应用变量域了!
end
end
在下列情况下你将拥有应用变量域的绑定:
- 在应用类中
- 在扩展中定义的方法
- 传递给
helpers 的代码块 - 用作
set值的过程/代码块
你可以访问变量域对象(就是应用类)就像这样:
- 通过传递给代码块的对象 (configure { |c| ... })
- 在请求变量域中使用
settings