码迷,mamicode.com
首页 > 其他好文 > 详细

rack知识 rails on rack

时间:2014-10-10 23:42:14      阅读:343      评论:0      收藏:0      [点我收藏+]

标签:style   http   io   使用   ar   sp   on   代码   html   

一、什么是Rack?

          rack 实际上是一种api。它用最简单的方式封装了http请求和响应,是统一和提炼了服务器和框架,以及两者之间的软件(中间件)的api(借口)。

二、rack的作用:

  • Rack的框架roll你的ruby框架
  • Rack提供了你的不同的web server 和框架/应用的交互,这样可以让框架可以兼容更多的web server(必须得支持Rack),如:Phusion Passenger, Litespeed, Mongrel, Thin, Ebb, Webrick
  • Rack可以减少应用程序的开支,可以很自由的获取request,respond session cookies 和params
  • Rack还可以让一个程序可以包含多个框架,没有class的冲突,Rails和sinatra的整合是最好的例子
  • Rack生成的中间件可以重复使用于不同的框架/应用,比如:同一个Anti-spamming rack middleware可以使用在你的rails app,sinatra app 或者的your custom Rack application

三、rack 的规定:

      返回一个返回参数(enviroment)的call()函数;

      call()函数return一个数组[http_status_code, responde_header_hash, body]

四、rack的实例解析:

  1、

require rubygems‘
require rackclass HelloWorld
  def call(env)
    [200, {"Content-Type" => "text/html"}, "Hello Rack!"]
  end
end

Rack::Handler::Mongrel.run HelloWorld.new, :Port => 9292
通过传递HelloWorld的一个对象到mongrel rack handler ,然后启动了服务端口9292
2、
require rubygems‘
require rackRack::Handler::Mongrel.run proc {|env| [200, {"Content-Type" => "text/html"}, "Hello Rack!"]}, :Port => 9292
应为返回的是一个call()函数,可以用proc来实现代码
3、
require rubygemsrequire rack

def application(env)
  [200, {"Content-Type" => "text/html"}, "Hello Rack!"]
end
Rack::Handler::Mongrel.run method(:application), :Port => 9292
使用方法类来实现

五、安装了rack gem
还可以这样实现上面的代码:
在config.ru
run Proc.new {|env| [200, {"Content-Type" => "text/html"}, "Hello Rack!"]}
然后运行:
rackup config.ru

 
 
 

rack知识 rails on rack

标签:style   http   io   使用   ar   sp   on   代码   html   

原文地址:http://www.cnblogs.com/chenzhenzhen/p/4017726.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!