`
wudixiaotie
  • 浏览: 136968 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

rack分享(一):rack、rackbuilder和rackup

    博客分类:
  • ruby
阅读更多

Rack app的定义方式是:

 

require ‘rack’
class MyServer
  def call(env)
    [200, {}, ['hello world']]
  end
end
Rack::Handler::WEBrick.run MyServer.new, Port: 2000

 要给app加一些中间件,就需要这么写:

app = MyServer.new
app = Rack::Lint.new(app)
app = Rack::ShowStatus.new(app)
app = Rack::ShowExceptions.new(app)
app = Rack::CommonLogger.new(app)

Rack有自己的DSL(领域内专属语言)叫Rack::Builder,定义方法是:

 

 

app = Rack::Builder.new do
  use Rack::CommonLogger
  use Rack::ShowExceptions
  use Rack::ShowStatus
  use Rack::Lint
  run MyServer.new
end

 也可以把DSL的代码写在单独的ru配置文件中,这种方式形成的文件叫rackup文件

 

 

#!/usr/bin/env rackup
use Rack::CommonLogger
use Rack::ShowExceptions
use Rack::ShowStatus
use Rack::Lint
run MyServer.new

 执行myserver.ru -s webrick -p 2000

 

分享到:
评论

相关推荐

    rack-contrib:贡献的机架中间件和实用程序

    贡献的机架中间件和实用程序该软件包包括Ruby Web服务器界面Rack的各种附加组件: Rack::Access Access-基于IP地址限制访问Rack::Backstage返回指定文件的内容(如果存在),这便于放置维护页面。 Rack::...

    Rack::UTF8Sanitizer.zip

    Rack::UTF8Sanitizer 是一个 Rack 中间件用来清理 URI 和 HTTP 请求头部中包含的无效 UTF-8 字符。Rails 的使用方法:config.middleware.insert 0, Rack::UTF8SanitizerRack 的使用方法:use Rack::UTF8Sanitizer

    rack教程(ruby)

    Rack::Builder提供了一个简洁的方式来组织中间件和应用,使其更易于管理和维护。 例如: ```ruby use MyMiddleware run MyApp ``` 在这个例子中,`use`语句用来添加中间件,而`run`语句则用来指定最终的应用。 #...

    rack-cas:Rack-CAS是用于执行CAS客户端身份验证的简单Rack中间件

    耙任务以修剪过时的会话rack_cas:sessions:prune:active_record和rack_cas:sessions:prune:mongoid要求Ruby> = 2.0 运行中的需要身份验证时状态的应用安装滑轨将 gem 'rack-cas'添加到您的并运行bundle install ...

    rack-authorize:用于授权api访问的Rack中间件

    Rack :: Authorize是一个Rack中间件,因此可以在任何Ruby Web框架中使用。 谢谢Rack。 安装 将此行添加到您的应用程序的Gemfile中: gem 'rack-authorize' , :git => 'git@github....

    rack-timeout:中止要求时间太长的请求

    Rack :: Timeout不能解决长时间运行的请求问题,它是一种调试和修复工具。 应用程序开发人员应跟踪机架超时的数据并解决特定超时的重复实例,例如通过重构代码,使其运行更快或抵消冗长的工作以异步发生。 升级中 ...

    redis-store:命名空间的Rack :: Session,Rack :: Cache,I18n和缓存Redis存储(用于Ruby Web框架)

    Redis Store为现代Ruby框架提供了全套存储( Cache , I18n , Session , HTTP Cache ),例如: Ruby on Rails , Sinatra , Rack , Rack :: Cache和I18n 。 它支持对象编组,超时,单个或多个节点以及名称空间...

    rack-ssl-enforcer:一个简单的Rack中间件,用于执行ssl连接

    已针对Ruby 1.8.7、1.9.2、1.9.3、2.0.0、2.1.10、2.2.7、2.3.4、2.4.1,ruby-head,REE和Rubinius&JRuby的最新版本进行测试。 安装 安装Rack :: SslEnforcer的最简单方法是使用 。 将Rack :: SslEnforcer添加到...

    rack-cache:Ruby Web应用程序的真实HTTP缓存

    可移植:100%Ruby /可与任何支持Rack的框架一起使用磁盘,内存缓存和堆内存存储后端有关Rack :: Cache功能和用法的更多信息,请参见: Rack :: Cache并未针对性能进行过优化。 该项目的主要目标是为中小型部署提供...

    rack-router:适用于Rack应用程序的简单路由器

    一个用于机架应用程序的简单路由器。 需要Ruby 1.9+。 安装 将此行添加到您的应用程序的Gemfile中: gem 'rack-router' 然后执行: $ bundle 或将其自己安装为: $ gem install rack-router 用法 这是一个示例...

    rack-piwik:机架中间件帮助在每个请求中添加 piwik js

    改编自 Rack::Piwik 简单的 Rack 中间件有助于将 Piwik 跟踪代码注入您网站的页脚。 用法 宝石档案: gem 'rack-piwik', :require => 'rack/piwik' 辛纳屈 ## app.rb use Rack::Piwik, :piwik_url => '<url>', ...

    rack-attack, 用于阻塞&节流的rack 中间件.zip

    rack-attack, 用于阻塞&节流的rack 中间件 :: 攻击 !rack 中间件,用于阻塞...Rack::Attack 是一个 rack 中间件,用来保护你的网络应用程序不受坏客户端的影响。 它允许基于请求的任意属性的safelisting,blocklisting

    rack-reverse-proxy, rack的反向代理.zip

    2. **配置**:在你的Rack应用中,创建一个Rack::ReverseProxy实例,并设置你需要代理的URL规则。例如: ```ruby use Rack::ReverseProxy do reverse_proxy /^\/api/, 'http://api.example.com' end ``` 这将把...

    rack-timesec-源码.rar

    Rack::Timesec是一个用于Ruby on Rails框架的中间件,它主要用于在Web应用中记录请求处理的时间,从而帮助开发者优化性能。源码分析是理解软件工作原理的重要途径,对于Rack::Timesec而言,了解其内部机制有助于我们...

    rack-test:架子

    它可以单独使用,也可以作为Web框架和构建测试库的可重用起点。特征跨请求维护一个饼干罐根据需要轻松进行重定向设置请求标头以供所有后续请求使用占地面积小。 大约200 LOC支持平台2.2.2+ 2.3 2.4 JRuby 9.1以上...

    ROR绿色最新环境(2013/3/10)

    Rack::Lock #<ActiveSupport::Cache::Strategy::LocalCache::Middleware:0x164feb> Rack::Runtime Rack::MethodOverride ActionDispatch::RequestId Rails::Rack::Logger ActionDispatch::ShowExceptions ...

    rack-component:在任何Rack应用中使用模块化,React样式的组件处理HTTP请求

    像React.js组件一样, Rack::Component实现一个render方法,该方法接受输入数据并返回要显示的内容。 您可以在任何Rack应用程序中使用“组件”来代替“控制器”,“视图”,“模板”和“助手”。 安装 将rack-...

    rack-params:`机架

    包括Rack::Params获得.validator , #validate和#validate! 方法。 调用.validator(name, options = {}, &code)注册一个命名的验证器,以备后用。 调用#validate(name = nil, params = request.params, options = ...

    rack-jekyll:将您的Jekyll应用程序转换为Rack应用程序!

    为了与Shotgun和Rackup一起运行,需要config.ru文件。 您甚至可以将Jekyll应用程序部署到 ! 将其复制到您的Jekyll网站根目录中的config.ru中: require "rack/jekyll" run Rack :: Jekyll . new 而已。 Heroku...

    rack-reducer:在任何Rack应用程序中,通过任何ORM,通过URL参数声明式过滤数据

    安装将rack-reducer添加到您的Gemfile中: gem 'rack-reducer' , require : 'rack/reducer' Rack :: Reducer除了Rack本身之外没有其他依赖项。利用如果您的应用需要呈现数据库记录列表,则可能希望这些记录可通过URL...

Global site tag (gtag.js) - Google Analytics