`

Sinatra::Request#process_route(pattern, keys, conditions)

 
阅读更多
    # If the current request matches pattern and conditions, fill params
    # with keys and call the given block.
    # Revert params afterwards.
    #   
    # Returns pass block.
    def process_route(pattern, keys, conditions)
      @original_params ||= @params
      route = @request.route
      route = '/' if route.empty? and not settings.empty_path_info?
      if match = pattern.match(route)
        values = match.captures.to_a
        params =
          if keys.any?
            keys.zip(values).inject({}) do |hash,(k,v)|
              if k == 'splat'
                (hash[k] ||= []) << v
              else
                hash[k] = v
              end
              hash
            end
          elsif values.any?
            {'captures' => values}
          else
            {}
          end
        @params = @original_params.merge(params)
        @block_params = values
        catch(:pass) do
          conditions.each { |cond|
            throw :pass if instance_eval(&cond) == false }
          yield
        end
      end
    ensure
      @params = @original_params
    end
分享到:
评论

相关推荐

    Sinatra并发性提升扩展Sinatra::Synchrony.zip

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

    sinatra-xsendfile:sinatra x_send_file 帮助程序更快地发送文件

    Sinatra 扩展:XSendFile sinatra-xsendfile扩展提供了x_send_file帮助器方法来更快地发送文件注意:不再支持sinatra-xsendfile 。 考虑使用代替。 ##XSendFile 在; 在; 在。 ##安装如果您使用 ,只需将sinatra-...

    sinatra-template_metrics:仪表 sinatra 模板渲染

    Sinatra::TemplateMetrics 仪表 sinatra 模板渲染安装将此行添加到应用程序的 Gemfile 中: gem 'sinatra-template_metrics' 然后执行: $ bundle或者自己安装: $ gem install sinatra-metrics用法除了sinatra/base...

    user_authentication_sinatra:工作

    Bolderer Sinatra应用程序 这个基于Sinatra的应用程序由jacqueline-lam设计,是Flatiron学校软件工程课程的一个组合项目。 该应用程序为有抱负的巨石提供了机会来跟踪他们所攀爬的问题,并为他人的攀爬进度欢呼! ...

    TODO_Sinatra:简单的TODO清单

    Sinatra是一个轻量级的Ruby框架,用于构建Web应用程序。它以其简洁的语法和灵活性而闻名,适合开发小型到中型的项目。在"TODO_Sinatra:简单的TODO清单"这个应用中,我们将探讨如何使用Sinatra来创建一个基本的待办...

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

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

    endpoint_base

    gem 'tilt-jbuilder' , require : 'sinatra/jbuilder' # ... gem 'endpoint_base' 终点 require "sinatra" require "endpoint_base" class SampleEndpoint &lt; EndpointBase :: Sinatra :: Base # optional ...

    rubyinstaller 2.3.1

    2. **Hash#transform_keys** 和 **Hash#transform_values**:这两个方法允许开发者以更简洁的方式转换哈希键或值,提高了代码的可读性。 3. **String#prepend**:类似于String#append,这个方法可以在字符串的开头...

    Rails,Sinatra,Merb,DataMapper等的分页库-Ruby开发

    will_paginate will_paginate是一个分页库,与Ruby on Rails,Sinatra,Hanami :: View,Merb,DataMapper和Sequel集成。 安装:##用于Rails 3 +,Sinatra和Merb的Gemfile gem'will_paginate','〜&gt; will_paginate ...

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

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

    sinatra-respond_to:用于Sinatra中内置Web服务支持的response_to样式Rails块

    sinatra-respond_to 描述: 在Sinatra中提供对内置Web服务支持的response_to样式Rails块 功能/问题: 根据提供的内容处理内容类型的设置 自动可以调整XMLHttpRequests返回Javascript 根据HTTP_ACCEPT标头解析...

    yodatra:Yodatra 是一个建立在 Sinatra 之上的简约框架

    它是一个建立在 Sinatra 之上的简约框架。 ActiveRecord的强大功能为您提供了Sinatra应用程序的简单性。 还有各种小帮手。 立即部署您的 API 基于您的 ActiveRecord 模型,API 将非常简单地公开。 对于您想要公开...

    前端开源库-route-pattern

    `route-pattern`是一个专为前端设计的开源库,它提供了类似Sinatra或Rails风格的路由模式匹配功能,帮助开发者更方便地处理和组织应用程序的路由逻辑。在本文中,我们将深入探讨`route-pattern`库的工作原理、特性...

    SinatraStreetFighter:欢迎使用我简化的Street Fighter模拟版本。 您可以选择一个角色,添加战斗动作以及史诗般的战斗开始的最后阶段!

    Sinatra ::街头霸王 域建模:: Street Fighter 欢迎使用我简化的Street Fighter模拟版本。 您可以选择一个角色,添加战斗动作以及史诗般的战斗开始的最后阶段!关于在我的《街头霸王》领域建模世界中,我旨在达到这个...

    sinatra-asset-pipeline:基于Sprockets的Sinatra的资产管道

    Sinatra资产管道 基于Sinatra资产管道实现。 sinatra-asset-pipeline支持即时编译资产以进行开发以及预编译资产以进行生产。 sinatra-asset-pipeline的设计目标是为将Sinatra应用程序与Sprockets集成提供良好的默认...

    :chart_with_upwards_trend:基于机架的A / B测试框架-Ruby开发

    Split Based基于机架的A / B测试框架https://libraries.io/rubygems/split Split是基于机架的A / B测试框架,旨在与Rails,Sinatra或任何其他基于机架的应用程序一起使用。 Split是重载Split:chart_increasing:基于...

    generator-angular-sinatra:用于 AngularJS + Sinatra 的 Yeoman 生成器

    Angular-Sinatra 生成器 用于和生成器。 Sinatra 是一个基于 Ruby 的微框架。 有关 AngularJS 与其他微框架的集成,请参阅 。 安装 安装 、 和或 。 安装 gem。 开发模式也需要 。 安装约曼: npm install -g yo...

    sinatra-bind:用于将实例方法绑定到路由的 Sinatra 扩展

    gem 'sinatra-bind' 然后执行: $ bundle 或者自己安装: $ gem install sinatra-bind 用法 您可以平滑地定义一条没有阻塞的路线。 class App &lt; Sinatra :: Base register Sinatra :: Bind def index ...

    active_action:在Ruby中构建和使用服务对象的简单方法

    主动动作 在Ruby中构建和使用服务对象的简单方法。 安装 将此行添加到您的应用程序的Gemfile中: gem 'ruby-active_action' , '~&gt; 3.0.1' 或使用其他宝石: 然后执行: $ bundle install ActiveAction示例 ...

    rails-assets-sinatra:那是

    在Sinatra中使用Rails资产 这是一个最小的演示应用程序,展示了如何在 Sinatra 应用程序中使用 。 Rails Assets 将与基于的应用程序集成在一起。 一体化 文件 此应用程序使用将 Sinatra 与 Sprockets 集成的 ...

Global site tag (gtag.js) - Google Analytics