request.path_info
request.url
env["HTTP_REFERER"]
Sinatra#register
extension.registered(self) if extension.respond_to?(:registered)
Views / Templates
Templates are assumed to be located directly under the ./views directory. To use a different views directory:
set :views, File.dirname(__FILE__) + '/templates'
One important thing to remember is that you always have to reference templates with symbols, even if they’re in a subdirectory (in this case, use :'subdir/template'). You must use a symbol because otherwise rendering methods will render any strings passed to them directly.
Accessing Variables in Templates
Templates are evaluated within the same context as route handlers. Instance variables set in route handlers are directly accessible by templates:
get '/:id' do
@foo = Foo.find(params[:id])
haml '%h1= @foo.name'
end
Or, specify an explicit Hash of local variables:
get '/:id' do
foo = Foo.find(params[:id])
haml '%h1= bar.name', :locals => { :bar => foo }
end
This is typically used when rendering templates as partials from within other templates.
731 # Returns pass block.
732 def process_route(pattern, keys, conditions)
733 @original_params ||= @params
734 route = @request.route
735 route = '/' if route.empty? and not settings.empty_path_info?
736 if match = pattern.match(route)
737 values = match.captures.to_a
738 params =
739 if keys.any?
740 keys.zip(values).inject({}) do |hash,(k,v)|
741 if k == 'splat'
742 (hash[k] ||= []) << v
743 else
744 hash[k] = v
745 end
746 hash
747 end
748 elsif values.any?
749 {'captures' => values}
750 else
751 {}
752 end
753 @params = @original_params.merge(params)
754 @block_params = values
755 catch(:pass) do
756 conditions.each { |cond|
757 throw :pass if instance_eval(&cond) == false }
758 yield
759 end
760 end
761 ensure
762 @params = @original_params
763 end
分享到:
相关推荐
Sinatra::Synchrony是 Sinatra的一个小扩展,它动态提升了Sinatra网络应用的并发性。由于EventMachine和EM-Synchrony的支持,当你有很多 传输和低速IO请求时(如向外部APIs发送的HTTP请求),它增加了你的应用每个...
Sinatra在Ruby世界里以其简洁、高效的语法而著名,使得开发者能快速构建Web应用。Pinatra同样致力于提供这样的体验,为PHP开发者提供一种轻量级、面向表达式的Web开发解决方案。 【描述】提到"Sinatra的一个PHP复制...
Ruby-Padrino是一个基于Sinatra的全功能Web开发框架,它为开发者提供了更高级别的抽象和组织结构,使得创建复杂的Web应用变得更加简单高效。在Ruby社区中,Sinatra被誉为轻量级、简洁的HTTP服务器接口库,而Padrino...
sinatra-pubsub, 为 Sinatra 推送&流 Sinatra::PubSubPubSub是对 Sinatra的扩展,它增加了使用HTML5服务器发送事件的基本发布/订阅流。例如客户端可以订阅以下事件:var es = new EventSource('/subscribe
almost-sinatra, Sinatra 重构,现在只有六个行 比一双袜子更受欢迎 几乎 Sinatra "until programmers stop acting like obfuscation is morally hazardous,they're not artists, just kid
### JumpStart Sinatra 教程详解 #### 一、引言 Sinatra 是一款轻量级的 Ruby Web 框架,以其简洁性、灵活性而著称。它非常适合快速开发小型 Web 应用程序或者 API 接口。《JumpStart Sinatra》这本书由 Darren ...
《Sinatra模板源码解析》 Sinatra是一个轻量级的Ruby框架,用于构建Web应用程序。它以其简洁、直观的语法著称,使得开发者能够快速地搭建RESTful Web服务。在"sinatra-template-源码.rar"这个压缩包中,我们有机会...
标题 "sinatra-hello-world-basics-onl01-seng-ft-090820-master.rar" 提供的信息表明,这是一个关于Sinatra框架的基础教程项目,可能包含了一个在线课程或者工作坊的内容,时间可能是在2009年8月20日。Sinatra是一...
**Ruby-RedisDashboard:一个Sinatra应用来监控Redis服务器** Ruby-RedisDashboard是基于Sinatra框架构建的一个轻量级Web应用,专为监控Redis服务器设计。这个应用提供了一个直观的界面,可以展示关于Redis服务器的...
Java Fry 是一个基于Java语言的轻量级Web框架,其设计灵感来源于Ruby的Sinatra框架。Sinatra以其简洁明了的语法和高效的工作流程而受到开发者喜爱,Java Fry旨在为Java开发者提供相似的开发体验,使得构建Web应用变...
Sinatra靴子 一个简单的Sinatra起点 Sinatra Bootstrap支持: Sinatra Bootstrap的目的是什么? 我创建Sinatra Bootstrap是为了使Sinatra项目具有一致的起点。 我喜欢在每个项目中都可以使用Haml,Sass和Compass,...
Sinatra快速入门模板使用方式如下: $ quik new sinatra这将下载并运行 starter向导脚本( )。 导致: Hello from the sinatra quick starter wizard scriptQ: Name of the sinatra app? [hola]: holaThanks! Ready...
用于启用跨域资源共享(CORS)的简单Sinatra扩展要查看有关跨域资源共享的更多信息,请参阅 使用捆绑器安装 gem "sinatra-cross_origin", "~> 0.3.1" 例子 要为所有路由启用跨源请求: require 'sinatra' require...
Sinatra 架构 为您的 Sinatra 应用程序定义架构以验证请求和响应。 将其转储为 JSON 模式以帮助生成客户端等等! 用法 注册Sinatra::Schema来定义资源,例如: class MyApi < Sinatra :: Base register ...
Sinatra是一种用于以最少的精力在Ruby中快速创建Web应用程序: # myapp.rb require 'sinatra' get '/' do 'Hello world!' end 安装gem: gem install sinatra 并运行: ruby myapp.rb 查看位于: 重新启动...
**Ruby-Sinatra-SampleApp** 是一个基于Ruby编程语言,使用Sinatra框架和Sequel数据库库构建的示例应用程序。这个项目旨在提供一个简洁的起点,帮助开发者了解如何使用这些技术来创建轻量级、高效的Web应用。下面将...
Docker-Compose 的 Sinatra Redis 示例 这是一个使用 Sinatra 和 Redis 构建的 dockerized 示例 JSON API。 我希望有人能从中吸取教训。 这个例子真的很小,并且使用了和的 Docker 库容器。 最有趣的部分是您必须...
Nginx、Puma 和 Sinatra 示例展示了如何使用 Puma 和 Nginx 部署一个简单的 Sinatra 应用程序。 动态内容通过 Puma 提供,而静态内容通过 Nginx 提供。 git clone ...
授权通道AuthLane Sinatra 扩展允许通过支持不同用户角色和通过 Cookie 自动登录的简单用户身份验证。 它公开了 Helper 方法来判断哪些路由受到保护或参与了身份验证过程。 实际的身份验证逻辑(策略)由应用程序...
Ajax-sinatra-api-server-toolbox.zip,sinatra api服务器工具箱(ruby、sinatra、activerecord、postgresql、json、jquery、ajax),ajax代表异步javascript和xml。它是多种web技术的集合,包括html、css、json、xml...