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 头部的助手。添加了link
、stylesheet
和prefetch
助手方法。 -
sinatra/multi_route
: 添加了为多个路由和多个或自定义 HTTP 动词定义一个路由块的能力。 -
sinatra/namespace
: 为 Sinatra 添加了命名空间支持。 -
sinatra/respond_with
: 根据传入的请求自动选择操作和/或模板。添加了助手respond_to
和respond_with
。 -
sinatra/custom_logger
: 此扩展允许您使用 +logger+ 设置定义自己的日志记录器实例。然后,该日志记录器将作为 #logger 助手方法在您的路由和视图中可用。 -
sinatra/required_params
: 确保是否存在必需的查询参数
自定义扩展
这些扩展可能会添加额外的依赖项并增强现有 API 的行为。
当前包含
-
sinatra/reloader
: 在代码更改时自动重新加载 Ruby 文件。已弃用:请考虑使用其他替代方案,例如 rerun 或 rack-unreloader。
其他工具
-
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