`

sinatra

阅读更多
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并发性提升扩展Sinatra::Synchrony.zip

    Sinatra::Synchrony是 Sinatra的一个小扩展,它动态提升了Sinatra网络应用的并发性。由于EventMachine和EM-Synchrony的支持,当你有很多 传输和低速IO请求时(如向外部APIs发送的HTTP请求),它增加了你的应用每个...

    PHP版本的Sinatra极其轻量优雅的web领域专用语言框架

    Sinatra在Ruby世界里以其简洁、高效的语法而著名,使得开发者能快速构建Web应用。Pinatra同样致力于提供这样的体验,为PHP开发者提供一种轻量级、面向表达式的Web开发解决方案。 【描述】提到"Sinatra的一个PHP复制...

    Ruby-Padrino一个构建在Sinatra上的全堆栈ruby框架

    Ruby-Padrino是一个基于Sinatra的全功能Web开发框架,它为开发者提供了更高级别的抽象和组织结构,使得创建复杂的Web应用变得更加简单高效。在Ruby社区中,Sinatra被誉为轻量级、简洁的HTTP服务器接口库,而Padrino...

    sinatra-pubsub, 为 Sinatra 推送&流.zip

    sinatra-pubsub, 为 Sinatra 推送&流 Sinatra::PubSubPubSub是对 Sinatra的扩展,它增加了使用HTML5服务器发送事件的基本发布/订阅流。例如客户端可以订阅以下事件:var es = new EventSource('/subscribe

    almost-sinatra, Sinatra 重构,现在只有六个行 比一双袜子更受欢迎.zip

    almost-sinatra, Sinatra 重构,现在只有六个行 比一双袜子更受欢迎 几乎 Sinatra "until programmers stop acting like obfuscation is morally hazardous,they're not artists, just kid

    jump star sinatra sinatra教程

    ### JumpStart Sinatra 教程详解 #### 一、引言 Sinatra 是一款轻量级的 Ruby Web 框架,以其简洁性、灵活性而著称。它非常适合快速开发小型 Web 应用程序或者 API 接口。《JumpStart Sinatra》这本书由 Darren ...

    sinatra-template-源码.rar

    《Sinatra模板源码解析》 Sinatra是一个轻量级的Ruby框架,用于构建Web应用程序。它以其简洁、直观的语法著称,使得开发者能够快速地搭建RESTful Web服务。在"sinatra-template-源码.rar"这个压缩包中,我们有机会...

    sinatra-hello-world-basics-onl01-seng-ft-090820-master.rar

    标题 "sinatra-hello-world-basics-onl01-seng-ft-090820-master.rar" 提供的信息表明,这是一个关于Sinatra框架的基础教程项目,可能包含了一个在线课程或者工作坊的内容,时间可能是在2009年8月20日。Sinatra是一...

    Lamer News-一个用 Ruby,Sinatra,Redis,JQuery 编写的 HN 风格社交新闻网站.zip

    Lamer News——一个用 Ruby/Sinatra/Redis/JQuery 编写的 HN 风格社交新闻网站关于Lamer news 是一个使用 Ruby、Sinatra、Redis 和 jQuery 编写的 Reddit / Hacker News 风格新闻网站的实现。目标是建立一个非常易于...

    Ruby-RedisDashboard一个用于监控Redis服务器的Sinatra应用

    **Ruby-RedisDashboard:一个Sinatra应用来监控Redis服务器** Ruby-RedisDashboard是基于Sinatra框架构建的一个轻量级Web应用,专为监控Redis服务器设计。这个应用提供了一个直观的界面,可以展示关于Redis服务器的...

    jfry,java fry是一个受sinatra启发的web库.zip

    Java Fry 是一个基于Java语言的轻量级Web框架,其设计灵感来源于Ruby的Sinatra框架。Sinatra以其简洁明了的语法和高效的工作流程而受到开发者喜爱,Java Fry旨在为Java开发者提供相似的开发体验,使得构建Web应用变...

    sinatra-bootstrap:一个简单的Sinatra起点

    Sinatra靴子 一个简单的Sinatra起点 Sinatra Bootstrap支持: Sinatra Bootstrap的目的是什么? 我创建Sinatra Bootstrap是为了使Sinatra项目具有一致的起点。 我喜欢在每个项目中都可以使用Haml,Sass和Compass,...

    sinatra-starter-template:sinatra快速入门模板

    Sinatra快速入门模板使用方式如下: $ quik new sinatra这将下载并运行 starter向导脚本( )。 导致: Hello from the sinatra quick starter wizard scriptQ: Name of the sinatra app? [hola]: holaThanks! Ready...

    sinatra-cross_origin:Sinatra的跨源请求共享扩展

    用于启用跨域资源共享(CORS)的简单Sinatra扩展要查看有关跨域资源共享的更多信息,请参阅 使用捆绑器安装 gem "sinatra-cross_origin", "~&gt; 0.3.1" 例子 要为所有路由启用跨源请求: require 'sinatra' require...

    sinatra-schema:为您的 Sinatra API 定义架构

    Sinatra 架构 为您的 Sinatra 应用程序定义架构以验证请求和响应。 将其转储为 JSON 模式以帮助生成客户端等等! 用法 注册Sinatra::Schema来定义资源,例如: class MyApi &lt; Sinatra :: Base register ...

    sinatra:穿着DSL(官方规范仓库)的经典Web开发

    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的示例应用程序

    **Ruby-Sinatra-SampleApp** 是一个基于Ruby编程语言,使用Sinatra框架和Sequel数据库库构建的示例应用程序。这个项目旨在提供一个简洁的起点,帮助开发者了解如何使用这些技术来创建轻量级、高效的Web应用。下面将...

    sinatra-redis-docker-example:使用 Sinatra 和 Redis 的 dockerized JSON API 的超级简单示例

    Docker-Compose 的 Sinatra Redis 示例 这是一个使用 Sinatra 和 Redis 构建的 dockerized 示例 JSON API。 我希望有人能从中吸取教训。 这个例子真的很小,并且使用了和的 Docker 库容器。 最有趣的部分是您必须...

    nginx-puma-sinatra:示例展示了如何使用 Puma 和 Nginx 部署一个简单的 Sinatra 应用程序

    Nginx、Puma 和 Sinatra 示例展示了如何使用 Puma 和 Nginx 部署一个简单的 Sinatra 应用程序。 动态内容通过 Puma 提供,而静态内容通过 Nginx 提供。 git clone ...

    authlane:Sinatra 的简单用户身份验证和角色

    授权通道AuthLane Sinatra 扩展允许通过支持不同用户角色和通过 Cookie 自动登录的简单用户身份验证。 它公开了 Helper 方法来判断哪些路由受到保护或参与了身份验证过程。 实际的身份验证逻辑(策略)由应用程序...

Global site tag (gtag.js) - Google Analytics