# Sinatra
[![Gem Version](https://badge.fury.io/rb/sinatra.svg)](http://badge.fury.io/rb/sinatra)
[![Build Status](https://secure.travis-ci.org/sinatra/sinatra.svg)](https://travis-ci.org/sinatra/sinatra)
[![SemVer](https://api.dependabot.com/badges/compatibility_score?dependency-name=sinatra&package-manager=bundler&version-scheme=semver)](https://dependabot.com/compatibility-score.html?dependency-name=sinatra&package-manager=bundler&version-scheme=semver)
Sinatra is a [DSL](https://en.wikipedia.org/wiki/Domain-specific_language) for
quickly creating web applications in Ruby with minimal effort:
```ruby
# myapp.rb
require 'sinatra'
get '/' do
'Hello world!'
end
```
Install the gem:
```shell
gem install sinatra
```
And run with:
```shell
ruby myapp.rb
```
View at: [http://localhost:4567](http://localhost:4567)
The code you changed will not take effect until you restart the server.
Please restart the server every time you change or use
[sinatra/reloader](http://www.sinatrarb.com/contrib/reloader).
It is recommended to also run `gem install puma`, which Sinatra will
pick up if available.
## Table of Contents
* [Sinatra](#sinatra)
* [Table of Contents](#table-of-contents)
* [Routes](#routes)
* [Conditions](#conditions)
* [Return Values](#return-values)
* [Custom Route Matchers](#custom-route-matchers)
* [Static Files](#static-files)
* [Views / Templates](#views--templates)
* [Literal Templates](#literal-templates)
* [Available Template Languages](#available-template-languages)
* [Haml Templates](#haml-templates)
* [Erb Templates](#erb-templates)
* [Builder Templates](#builder-templates)
* [Nokogiri Templates](#nokogiri-templates)
* [Sass Templates](#sass-templates)
* [SCSS Templates](#scss-templates)
* [Less Templates](#less-templates)
* [Liquid Templates](#liquid-templates)
* [Markdown Templates](#markdown-templates)
* [Textile Templates](#textile-templates)
* [RDoc Templates](#rdoc-templates)
* [AsciiDoc Templates](#asciidoc-templates)
* [Radius Templates](#radius-templates)
* [Markaby Templates](#markaby-templates)
* [RABL Templates](#rabl-templates)
* [Slim Templates](#slim-templates)
* [Creole Templates](#creole-templates)
* [MediaWiki Templates](#mediawiki-templates)
* [CoffeeScript Templates](#coffeescript-templates)
* [Stylus Templates](#stylus-templates)
* [Yajl Templates](#yajl-templates)
* [WLang Templates](#wlang-templates)
* [Accessing Variables in Templates](#accessing-variables-in-templates)
* [Templates with `yield` and nested layouts](#templates-with-yield-and-nested-layouts)
* [Inline Templates](#inline-templates)
* [Named Templates](#named-templates)
* [Associating File Extensions](#associating-file-extensions)
* [Adding Your Own Template Engine](#adding-your-own-template-engine)
* [Using Custom Logic for Template Lookup](#using-custom-logic-for-template-lookup)
* [Filters](#filters)
* [Helpers](#helpers)
* [Using Sessions](#using-sessions)
* [Session Secret Security](#session-secret-security)
* [Session Config](#session-config)
* [Choosing Your Own Session Middleware](#choosing-your-own-session-middleware)
* [Halting](#halting)
* [Passing](#passing)
* [Triggering Another Route](#triggering-another-route)
* [Setting Body, Status Code and Headers](#setting-body-status-code-and-headers)
* [Streaming Responses](#streaming-responses)
* [Logging](#logging)
* [Mime Types](#mime-types)
* [Generating URLs](#generating-urls)
* [Browser Redirect](#browser-redirect)
* [Cache Control](#cache-control)
* [Sending Files](#sending-files)
* [Accessing the Request Object](#accessing-the-request-object)
* [Attachments](#attachments)
* [Dealing with Date and Time](#dealing-with-date-and-time)
* [Looking Up Template Files](#looking-up-template-files)
* [Configuration](#configuration)
* [Configuring attack protection](#configuring-attack-protection)
* [Available Settings](#available-settings)
* [Environments](#environments)
* [Error Handling](#error-handling)
* [Not Found](#not-found)
* [Error](#error)
* [Rack Middleware](#rack-middleware)
* [Testing](#testing)
* [Sinatra::Base - Middleware, Libraries, and Modular Apps](#sinatrabase---middleware-libraries-and-modular-apps)
* [Modular vs. Classic Style](#modular-vs-classic-style)
* [Serving a Modular Application](#serving-a-modular-application)
* [Using a Classic Style Application with a config.ru](#using-a-classic-style-application-with-a-configru)
* [When to use a config.ru?](#when-to-use-a-configru)
* [Using Sinatra as Middleware](#using-sinatra-as-middleware)
* [Dynamic Application Creation](#dynamic-application-creation)
* [Scopes and Binding](#scopes-and-binding)
* [Application/Class Scope](#applicationclass-scope)
* [Request/Instance Scope](#requestinstance-scope)
* [Delegation Scope](#delegation-scope)
* [Command Line](#command-line)
* [Multi-threading](#multi-threading)
* [Requirement](#requirement)
* [The Bleeding Edge](#the-bleeding-edge)
* [With Bundler](#with-bundler)
* [Versioning](#versioning)
* [Further Reading](#further-reading)
## Routes
In Sinatra, a route is an HTTP method paired with a URL-matching pattern.
Each route is associated with a block:
```ruby
get '/' do
.. show something ..
end
post '/' do
.. create something ..
end
put '/' do
.. replace something ..
end
patch '/' do
.. modify something ..
end
delete '/' do
.. annihilate something ..
end
options '/' do
.. appease something ..
end
link '/' do
.. affiliate something ..
end
unlink '/' do
.. separate something ..
end
```
Routes are matched in the order they are defined. The first route that
matches the request is invoked.
Routes with trailing slashes are different from the ones without:
```ruby
get '/foo' do
# Does not match "GET /foo/"
end
```
Route patterns may include named parameters, accessible via the
`params` hash:
```ruby
get '/hello/:name' do
# matches "GET /hello/foo" and "GET /hello/bar"
# params['name'] is 'foo' or 'bar'
"Hello #{params['name']}!"
end
```
You can also access named parameters via block parameters:
```ruby
get '/hello/:name' do |n|
# matches "GET /hello/foo" and "GET /hello/bar"
# params['name'] is 'foo' or 'bar'
# n stores params['name']
"Hello #{n}!"
end
```
Route patterns may also include splat (or wildcard) parameters, accessible
via the `params['splat']` array:
```ruby
get '/say/*/to/*' do
# matches /say/hello/to/world
params['splat'] # => ["hello", "world"]
end
get '/download/*.*' do
# matches /download/path/to/file.xml
params['splat'] # => ["path/to/file", "xml"]
end
```
Or with block parameters:
```ruby
get '/download/*.*' do |path, ext|
[path, ext] # => ["path/to/file", "xml"]
end
```
Route matching with Regular Expressions:
```ruby
get /\/hello\/([\w]+)/ do
"Hello, #{params['captures'].first}!"
end
```
Or with a block parameter:
```ruby
get %r{/hello/([\w]+)} do |c|
# Matches "GET /meta/hello/world", "GET /hello/world/1234" etc.
"Hello, #{c}!"
end
```
Route patterns may have optional parameters:
```ruby
get '/posts/:format?' do
# matches "GET /posts/" and any extension "GET /posts/json", "GET /posts/xml" etc
end
```
Routes may also utilize query parameters:
```ruby
get '/posts' do
# matches "GET /posts?title=foo&author=bar"
title = params['title']
author = params['author']
# uses title and author varia
没有合适的资源?快使用搜索试试~ 我知道了~
php+logstash+elasticsearch,完美解决搜索引擎及快速切片问题
共2000个文件
json:1108个
md:336个
yaml:275个
需积分: 0 0 下载量 142 浏览量
2024-01-16
11:44:42
上传
评论
收藏 156.78MB ZIP 举报
温馨提示
php+logstash+elasticsearch,完美解决搜索引擎及快速切片问题
资源推荐
资源详情
资源评论
收起资源包目录
php+logstash+elasticsearch,完美解决搜索引擎及快速切片问题 (2000个子文件)
ev.c 131KB
ev_linuxaio.c 23KB
http11_parser.c 21KB
selector.c 17KB
mini_ssl.c 13KB
puma_http11.c 13KB
bytebuffer.c 12KB
monitor.c 10KB
ev_epoll.c 10KB
ev_select.c 9KB
ev_kqueue.c 7KB
ev_port.c 6KB
ev_win32.c 5KB
ev_poll.c 4KB
atomic_reference.c 4KB
io_buffer.c 3KB
api.c 3KB
nio4r_ext.c 384B
rdoc.css 7KB
ev.h 29KB
snappy-test.h 17KB
snappy-stubs-internal.h 15KB
snappy.h 8KB
ev_vars.h 6KB
ev_wrap.h 6KB
snappy-internal.h 5KB
snappy-c.h 5KB
snappy-sinksource.h 5KB
http11_parser.h 1KB
nio4r.h 1KB
ext_help.h 548B
libev.h 133B
ConcurrentHashMapV8.java 156KB
ConcurrentHashMapV8.java 154KB
Http11Parser.java 14KB
Striped64.java 13KB
SynchronizationLibrary.java 12KB
Striped64.java 11KB
MiniSSL.java 11KB
RubyAnySerializer.java 10KB
JRubyMapBackendLibrary.java 10KB
Http11.java 10KB
Selector.java 10KB
ByteBuffer.java 9KB
SchParse.java 7KB
AtomicReferenceLibrary.java 7KB
ThreadLocalRandom.java 7KB
AtomicReferenceLibrary.java 6KB
RubyObjectDeserializer.java 6KB
JavaSemaphoreLibrary.java 6KB
LongAdder.java 6KB
LongAdder.java 6KB
JrJacksonBase.java 6KB
SajParse.java 6KB
Monitor.java 5KB
RubyUtils.java 5KB
JavaAtomicFixnumLibrary.java 4KB
JrParse.java 4KB
Nio4r.java 4KB
JrJacksonRaw.java 4KB
JjParse.java 4KB
JrJacksonRuby.java 3KB
Manticore.java 3KB
RubyJacksonModule.java 3KB
JavaAtomicBooleanLibrary.java 3KB
JrJacksonJava.java 3KB
RubyHandler.java 3KB
JavaHandler.java 2KB
IOBuffer.java 2KB
StreamParse.java 2KB
RubyAnySerializerTest.java 2KB
JrJacksonService.java 1KB
SnappyModule.java 1KB
RSpecTests.java 1KB
RSpecIntegrationTests.java 1KB
ConcurrentHashMap.java 1KB
AtomicReferenceService.java 917B
IParseHandler.java 894B
JrJacksonSaj.java 845B
JrJacksonSch.java 844B
ConcurrentRubyService.java 771B
RubyDateFormat.java 723B
HttpDeleteWithEntity.java 579B
RubyBigIntValueConverter.java 565B
HttpGetWithEntity.java 564B
SnappyExtService.java 552B
ParseError.java 545B
PumaHttp11Service.java 505B
RubyStringConverter.java 460B
RubyBigDecimalValueConverter.java 423B
RubyFloatValueConverter.java 412B
RubyIntValueConverter.java 409B
RubySymbolKeyConverter.java 377B
RubyStringKeyConverter.java 373B
JavaBigDecimalValueConverter.java 357B
JavaBigIntValueConverter.java 356B
JavaFloatValueConverter.java 318B
JavaLongValueConverter.java 313B
RubyStringNameConverter.java 272B
RubySymbolNameConverter.java 271B
共 2000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 20
资源评论
中年程序员一枚
- 粉丝: 1099
- 资源: 32
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 论文(最终)_20240430235101.pdf
- 基于python编写的Keras深度学习框架开发,利用卷积神经网络CNN,快速识别图片并进行分类
- 最全空间计量实证方法(空间杜宾模型和检验以及结果解释文档).txt
- 5uonly.apk
- 蓝桥杯Python组的历年真题
- 2023-04-06-项目笔记 - 第一百十九阶段 - 4.4.2.117全局变量的作用域-117 -2024.04.30
- 2023-04-06-项目笔记 - 第一百十九阶段 - 4.4.2.117全局变量的作用域-117 -2024.04.30
- 前端开发技术实验报告:内含4四实验&实验报告
- Highlight Plus v20.0.1
- 林周瑜-论文.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功