Sinatra::Contrib

目标

  • 对于每个未来的 Sinatra 版本,至少有一个完全兼容的版本
  • 高代码质量,高测试覆盖率
  • 包含人们经常要求的插件

包含的扩展

常用扩展

这些是常见的扩展,不会增加显著的开销或改变任何已存在 API 的行为。它们不会添加任何未与此 gem 一起安装的依赖项。

当前包含

  • sinatra/capture: 允许您捕获模板中块的内容。

  • sinatra/config_file: 允许从 yaml 文件加载配置。

  • sinatra/content_for: 为 Haml、Erb、Erubi 和 Slim 添加 Rails 风格的 content_for 助手。

  • sinatra/cookies: 用于读取和写入 cookie 的 cookies 助手。

  • sinatra/engine_tracking: 添加了像 haml? 这样的方法,允许助手方法检查它们是否在模板中调用。

  • sinatra/json: 添加了一个 #json 助手方法来返回 JSON 文档。

  • sinatra/link_header: 用于生成 link HTML 标签和相应的 Link HTTP 头部的助手。添加了 linkstylesheetprefetch 助手方法。

  • sinatra/multi_route: 添加了为多个路由和多个或自定义 HTTP 动词定义一个路由块的能力。

  • sinatra/namespace: 为 Sinatra 添加了命名空间支持。

  • sinatra/respond_with: 根据传入的请求自动选择操作和/或模板。添加了助手 respond_torespond_with

  • sinatra/custom_logger: 此扩展允许您使用 +logger+ 设置定义自己的日志记录器实例。然后,该日志记录器将作为 #logger 助手方法在您的路由和视图中可用。

  • sinatra/required_params: 确保是否存在必需的查询参数

自定义扩展

这些扩展可能会添加额外的依赖项并增强现有 API 的行为。

当前包含

其他工具

  • sinatra/extension: 用于编写您自己的 Sinatra 扩展的 Mixin。

  • sinatra/test_helpers: 帮助方法,便于测试您的 Sinatra 应用程序。部分从 Sinatra 中提取。测试框架无关

  • sinatra/quiet_logger: 扩展,用于从访问日志中排除特定路径。它通过修补 Rack::CommonLogger 来实现

安装

gem 'sinatra-contrib' 添加到 Gemfile 中,然后执行 bundle install

如果您不使用 Bundler,请在命令行中执行 gem install sinatra-contrib 手动安装 gem。

Git

如果您想出于任何原因从 git 使用 gem,您可以执行以下操作

github 'sinatra/sinatra' do
  gem 'sinatra-contrib'
end

在此块中,您还可以指定来自此 git 存储库的其他 gem。

用法

经典风格

单个扩展(例如:sinatra-content-for)

require 'sinatra'
require 'sinatra/content_for'

常用扩展

require 'sinatra'
require 'sinatra/contrib'

所有扩展

require 'sinatra'
require 'sinatra/contrib/all'

模块化风格

单个扩展(例如:sinatra-content-for)

require 'sinatra/base'
require 'sinatra/content_for'
require 'sinatra/namespace'

class MyApp < Sinatra::Base
  # Note: Some modules are extensions, some helpers, see the specific
  # documentation or the source
  helpers Sinatra::ContentFor
  register Sinatra::Namespace
end

常用扩展

require 'sinatra/base'
require 'sinatra/contrib'

class MyApp < Sinatra::Base
  register Sinatra::Contrib
end

所有扩展

require 'sinatra/base'
require 'sinatra/contrib/all'

class MyApp < Sinatra::Base
  register Sinatra::Contrib
end

文档

有关更多信息,请查看 官方文档api 文档