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