rack知识 rails on rack

一、什么是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 ‘rack‘

class 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 ,然后启动了服务端口92922、
require ‘rubygems‘
require ‘rack‘

Rack::Handler::Mongrel.run proc {|env| [200, {"Content-Type" => "text/html"}, "Hello Rack!"]}, :Port => 9292应为返回的是一个call()函数,可以用proc来实现代码3、require ‘rubygems‘require ‘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
 
 
 
时间: 2024-10-24 19:59:00

rack知识 rails on rack的相关文章

在没有数据库表或者列的情况下新建model;rails ,ruby, rack

因为在某些情况下要使用不存在的列,或者是要新建一个虚拟的model 可以在models下的concerns下新建tableless.rb,代码如下: module Tableless def self.included(base) base.extend(ClassMethods) base.send(:include,InstanceMethods) end module InstanceMethods def save(validate = true) validate ? valid? :

关于前端CSS预处理器Sass的小知识!

前面的话 ??"CSS预处理器"(css preprocessor)的基本思想是,用一种专门的编程语言,进行网页样式设计,然后再编译成正常的CSS文件.SASS是一种CSS的开发工具,提 供了许多便利的写法,大大节省了设计者的时间,使得CSS的开发,变得简单和可维护.本文将详细介绍sass的使用 定义 ??Sass是一门高于CSS的元语言,它能用来清晰地.结构化地描述文件样式,有着比普通CSS更加强大的功能.Sass能够提供更简洁.更优雅的语法,同时提供多种功能来创建可维护和管理的样式

Ubuntu下安装 Ruby, Rails 运行环境

说明: 在安装之前我做了:1.更新软件源,详细指导在这里: 2.更新系统:sudo apt-get update && sudo apt-get upgrade; 3.安装fcitx,安装sogou输入法: 4.打字不方便,禁用触摸板:sh TouchPad.sh off 接着就开始安装了!这里说明一下,后面的可能有几步可能是多余的,怕出错,就没有说去更正简化. 参考资料来自:边晓宇@CSDN 和 ruby-china.org如何快速正确的安装 Ruby, Rails 运行环境 操作系统U

CSS预编译器:Sass(进阶),更快的前端开发

1.@if @if 指令是一个 SassScript,它可以根据条件来处理样式块,如果条件为 true 返回一个样式块,反之 false 返回另一个样式块 在 Sass 中除了 @if 之,还可以配合 @else if 和 @else 一起使用. 假设要控制一个元素隐藏或显示,我们就可以定义一个混合宏,通过 @[email protected] 来判断传进参数的值来控制 display 的值 [email protected]循环 在制作网格系统的时候,大家应该对 .col1~.col12 这样

Nginx简介(待编辑)

Nginx是一款轻量级但高性能的Web服务器及反向代理服务器,也是邮件的代理服务器,越来越多的人开始使用Nginx来替代原本使用的Apache. Nginx的安装: 1.CentOS&Redhat的yum安装(以CentOS6.x为例): 确认系统信息 [[email protected] ~]# cat /etc/redhat-release CentOS release 6.7 (Final) [[email protected] ~]# uname -r 2.6.32-504.el6.x8

深入理解Hadoop集群和网络

导读:云计算和Hadoop中网络是讨论得相对比较少的领域.本文原文由Dell企业技术专家Brad Hedlund撰写,他曾在思科工作多年,专长是数据中心.云网络等.文章素材基于作者自己的研究.实验和Cloudera的培训资料. 本文将着重于讨论Hadoop集群的体系结构和方法,及它如何与网络和服务器基础设施的关系.最开始我们先学习一下Hadoop集群运作的基础原理. Hadoop里的服务器角色 Hadoop主要的任务部署分为3个部分,分别是:Client机器,主节点和从节点.主节点主要负责Had

深入理解Hadoop集群和网络【转】

http://os.51cto.com/art/201211/364374.htm 本文将着重于讨论Hadoop集群的体系结构和方法,及它如何与网络和服务器基础设施的关系.最开始我们先学习一下Hadoop集群运作的基础原理. 云计算和Hadoop中网络是讨论得相对比较少的领域.本文原文由Dell企业技术专家Brad Hedlund撰写,他曾在思科工作多年,专长是数据中心.云网络等.文章素材基于作者自己的研究.实验和Cloudera的培训资料. 本文将着重于讨论Hadoop集群的体系结构和方法,及

sass的@规则

@import Sass 支持所有 CSS3 的 @ 规则, 以及一些 Sass 专属的规则,也被称为“指令(directives)”. 这些规则在 Sass 中具有不同的功效,详细解释如下. @import Sass 扩展了 CSS 的 @import 规则,让它能够引入 SCSS 和 Sass 文件. 所有引入的 SCSS 和 Sass 文件都会被合并并输出一个单一的 CSS 文件. 另外,被导入的文件中所定义的变量或 mixins 都可以在主文件中使用. Sass 会在当前目录下寻找其他

改进遗传算法优化数据中心动态网络流量分配

背景知识 通常对于大型的数据中心网络(Data Center Networks, 简称DCN)来说,每一台服务器的使用情况是非常不一样的,而平均使用的情况几乎不存在,大部分的情况都是70%的使用和流量需求会集中在一小部分的服务器上,而这个也是通过LAN网络构建云计算中心所必不可免的问题. 如图是大部分情况下数据中心服务器使用的热点情况: 可以看到,其实大部分资源是相对空置的,所以要令数据中心有更高的运算效率,可想而知就是把其他相对空置的服务器利用起来或者把他们的网络流量尽可能的分配给使用度较高的