1 rack middleware中间件:
文件位于app/racks/irack.rb
class Irack
def initialize(app)
@app = app
end
def call(env)
request = Rack::Request.new env
if request.path_info == '/i/kitty'
[200, {}, ['i kitty']]
else
@app.call(env)
end
end
end
修改config.ru,在run Blog::Application上面添加下面代码
require ::File.expand_path('../app/racks/irack.rb', __FILE__)
use Irack
2 rails3 metal :
文件位于app/controllers/hi_controller.rb
class HiController < ActionController::Metal
def kitty
self.response_body = ['hi kitty']
end
end
路由配置, 修改config/routes.rb,添加下面代码
get "hi/kitty"
3 rails controller :
在终端输入:
引用
rails g controller hello kitty
在kitty方法代码
render :text => "hello kitty", :layout => nil
测试,ab一千个请求
引用
ab -n 1000 http://localhost:3000/i/kitty
ab -n 1000 http://localhost:3000/hi/kitty
ab -n 1000 http://localhost:3000/hello/kitty
测试结果:
方式 | 一千请求总时间 | 平均一个请求的时间(ms) |
rack | 2.225 seconds | 2.225 |
rails3 metal | 8.875 seconds | 8.875 |
rails3 controller | 19.048 seconds | 19.048 |
从测试结果来说,rack中间件性能无疑是最好的,但难维护.
metal相对controller来说,在追求性能的时候,是一个不错的选择
分享到:
相关推荐
Rails :: Auth是一个灵活的库,旨在使用Rack Middleware进行身份验证(AuthN)和授权(AuthZ)。 它将,使用AuthN中间件首先验证凭据(例如X.509证书或cookie),然后通过使用这些凭据(例如(ACL))的单独AuthZ...
这提供了Rack中间件和Rails ActionController过滤器,用于将HTTP请求-响应对记录到HAR文件中。 安装 将此行添加到您的应用程序的Gemfile中: gem 'akita-har_logger' 然后执行: $ bundle install 或将其自己安装...
机架:: BearerAuth Rack :: BearerAuth是在Rack应用中使用承载身份验证的中间件。... use Rack :: BearerAuth :: Middleware do match path : "/foo" do | token | # validate token # AccessToken.where
Rack::UTF8Sanitizer 是一个 Rack 中间件用来清理 URI 和 HTTP 请求头部中包含的无效 UTF-8 字符。Rails 的使用方法:config.middleware.insert 0, Rack::UTF8SanitizerRack 的使用方法:use Rack::UTF8Sanitizer
离子+滑轨 这是一段代码,伴随着有关如何使Rails和Ionic完美配合播放的屏幕录像。 入门 创建一个文件夹来容纳应用程序的两面 ...config.middleware.insert_before 0, "Rack::Cors" do allow do origins '*' reso
Rails.application.config.middleware.use OmniAuth::Builder do provider :developer unless Rails.env.production? provider :twitter, ENV['TWITTER_KEY'], ENV['TWITTER_SECRET'] end 标签:安全相关...
Rails::Rack::Logger ActionDispatch::ShowExceptions ActionDispatch::DebugExceptions ActionDispatch::RemoteIp ActionDispatch::Reloader ActionDispatch::Callbacks ActiveRecord::ConnectionAdapters::...
预渲染 Rails 嵌入式 一个 rails gem 使用中间件来渲染 JavaScript Web 应用程序,无需安装其他服务即可动态调用 phantomjs。 概述 使用Prerender Rails Embedded可以避免在 rails 环境中安装新的 node.js 服务器,...
一种精简而简单的Rack中间件,它可以将请求从一台主机重定向到另一台主机。 这对于难以或无法通过Nginx / Apache配置(例如Heroku)实现的环境很有用。 我正在使用它来将流量从* .herokuapp.com子域重定向到自定义...
该应用程序在基本的 Rack层的顶部添加了一些不错的帮助程序。 它的目的是使Warden更易于在基于Rails的环境中使用,而无需像设计中那样繁重。 安装 将此行添加到您的应用程序的Gemfile中: gem 'rails_warden' ...
滚动导轨 用法 在config/production.rb : Scrolls::Rails.setup(Rails.application) config.middleware.delete Rails::Rack::Logger config.middleware.use Scrolls::Rails::Rack::QuietLogger
安装将此行添加到您的应用程序的Gemfile中: gem 'rack-utf8_sanitizer'然后执行: $ bundle或将其自己安装为: $ gem install rack-utf8_sanitizer对于Rails,将其添加到您的application.rb : config . middleware...
机架式CSRF检测器仅当您使用GET和POST Rails才能保护您免受CSRF的侵害。 该中间件可帮助您确定GET请求何时导致应用程序状态更改。这个怎么运作rack-csrf-detector猴子修补ActiveRecord来标识导致数据库commit GET...
机架足够的 Json 机架中间件以减少 json 有效负载的大小 - 允许使用 json api 的客户端选择有效... Rails :: Application # Middleware options # root: the root key for the json payload , default: nil # target
机架:: LiveReload 不推荐使用此fork:改为查看 。 嘿,您的有了! 不再需要浏览器扩展! 只需将其插入您的中间件堆栈中就... # Add Rack::LiveReload to the bottom of the middleware stack with the default opti
安装将此行添加到应用程序的Gemfile中: gem 'rack-no_animations' 然后执行: $ bundle或将其自己安装为: $ gem install rack-no_animations用法在config/environments/test.rb将中间件添加到rails中,例如: ...
安装将rack-reducer添加到您的Gemfile中: gem 'rack-reducer' , require : 'rack/reducer' Rack :: Reducer除了Rack本身之外没有其他依赖项。利用如果您的应用需要呈现数据库记录列表,则可能希望这些记录可通过URL...
微信公众平台开放消息接口机架中间件 使用“ weixin /中间件”验证微信请求 解析推消息与“ weixin / model...use Weixin :: Middleware , 'your api token' , '/your_app_root' configure do set :wx_id , 'your_wei
Rack :: Defense是Rack中间件,可以轻松地向基于Rack的应用程序(Ruby On Rails,Sintratra等)添加请求速率限制和请求过滤。 使用提供的时间段,请求条件和最大请求数,请求(也称为速率限制)在滑动窗口上...
入门安装gem之后,将rack-objectspace插入到中间件堆栈中: config.middleware.insert_after ActionDispatch::Static, Rack::Objectspace, store: Moneta.new(:Redis)我建议在堆栈中安装尽可能低的机架对象空间。...