Sinatra Sinatra::Base - 中间件,程序库和模块化应用

2023-12-20 15:28 更新

把你的应用定义在顶层,对于微型应用这会工作得很好,但是在构建可复用的组件时候会带来客观的不利,比如构建 Rack 中间件,Rails metal,带有服务器组件的简单程序库,或者甚至是 Sinatra 扩展。顶层的 DSL 污染了 Object 命名空间,并假定了一个微型应用风格的配置 (例如,单一的应用文件, ./public 和 ./views 目录,日志,异常细节页面,等等)。这时应该让 Sinatra::Base 走到台前了:

require 'sinatra/base'

class MyApp < Sinatra::Base
  set :sessions, true
  set :foo, 'bar'

  get '/' do
    'Hello world!'
  end
end

Sinatra::Base 子类可用的方法实际上就是通过顶层 DSL 可用的方法。大部分顶层应用可以通过两个改变转换成 Sinatra::Base 组件:

你的文件应当引入 sinatra/base 而不是 sinatra; 否则,所有的 Sinatra 的 DSL 方法将会被引进到 主命名空间。

把你的应用的路由,错误处理,过滤器和选项放在 一个 Sinatra::Base 的子类中。

+Sinatra::Base+ 是一张白纸。大部分的选项默认是禁用的,包含内置的服务器。参见 选项和配置 查看可用选项的具体细节和他们的行为。


以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号