[ruby] rack简介
花花公子
2009-02-24
主页 http://rack.rubyforge.org/
安装方式 gem install rack 样例代码: infinity.ru infinity = Proc.new {|env| [200, {"Content-Type" => "text/html"}, env.inspect]} use Rack::CommonLogger use Rack::ShowExceptions map '/' do run infinity end map '/version' do map '/' do run Proc.new {|env| [200, {"Content-Type" => "text/html"}, "infinity 0.1"] } end map '/last' do run Proc.new {|env| [200, {"Content-Type" => "text/html"}, Rack::Request.new(env).params.inspect] } end end 执行: rackup infinity.ru -p 3000 然后用浏览器访问 http://localhost:3000 http://localhost:3000/version http://localhost:3000/version/last |
|
花花公子
2009-02-24
评价:
rack目前是我web开发的首选,当然它太简单。没有O/R Mapping,没有View层。当然同时它也没有script/server, script/generate这些负担。 但是rack本身就是作为中间件存在的,更复杂的应用应该考虑sinatra,下一步我会展示一些sinatra的特性。 |
|
CharlesCui
2009-03-24
有必要说明下你用在什么场景下,不是单纯简单就好的。
如果想追求处理速度,是否可以用别的语言的中间件?ruby语言的中间件再快,当一个请求阻塞住,其它的请求就只能等待,因为它的线程是假的。所以rack和其它ruby中间件即便再快,也只是理想情况,当一个请求的阻塞发生时,一切请求处理都完蛋。 |
|
花花公子
2009-03-24
一个请求堵塞住,我们还有其他线程接受请求呢。
别的语言的中间件不推荐,Ruby语言和其他语言的互操作性并不好。换句话说,所有的语言和别的语言的互操作性都不好。 |
|
CharlesCui
2009-03-24
ruby线程是假的,你不行你试试在一个rails的控制器的方法里写一个带条件的sleep,发一个sleep的请求过去,再发一个同一个控制器方法处理的请求过去,看看第二个会不会被第一个sleep的请求堵塞住。
结果是会的,所以ruby这个动态语言的线程是假的,所以用ruby实现的中间件要非常谨慎,说不定一个请求堵塞了,其它请求只能排队了,而不像别的语言可以另起线程处理,ruby只有一个主进程,进程堵塞了,新线程无法建立。 花花,要搞高并发,ruby真的不行。当然我也希望它行。 |
|
花花公子
2009-03-24
说错了,是多进程模型。一个进程当然只能接受一个请求了。
虽然ruby在1.8自身的线程是绿色线程,但是你可以去看看eventmachine库,这个库可以支持epoll操作,应该是用线程实现的。 |
|
robbin
2009-03-26
说实话讨厌rack,rack的fastcgi支持有bug,不但有bug,而且高负载下面不稳定,这个问题不解决,我们就没有办法升级rails
|
|
花花公子
2009-03-26
robbin请试试这个
http://github.com/rack/rack-contrib/tree/master 引用 Rack::LighttpdScriptNameFix - Fixes how lighttpd sets the SCRIPT_NAME and PATH_INFO variables in certain configurations.
|
|
robbin
2009-03-26
你的意思是用最新版本的rack来替代rails2.3的rack试试看?
|
|
花花公子
2009-03-26
rack-contrib相当于rack的插件,可以当作rack中间件使用的,和rack并不是直接的关系。其中的修复lighttpd参数的中间件我觉得可能会起到作用。
|
相关讨论
相关资源推荐
- intro-rack-notes:机架简介
- Turbo-rack技术背景及简介
- 阿里云 IoT Link Rack 一体机 V1.0.0 物联网平台 产品简介 20200417.pdf
- 阿里云 IoT Link Rack 一体机 V1.0.0 物联网边缘计算 产品简介 20200417.pdf
- 阿里云 IoT Link Rack 一体机 V1.0.0 IoT设备身份认证 产品简介 20200417.pdf
- 阿里云 IoT Link Rack 一体机 V1.0.0 IoT安全运营中心 产品简介 20200417.pdf
- 阿里云 IoT Link Rack 一体机 V1.0.0 物联网络管理平台 产品简介 20200417.pdf
- TCP系列23—重传—13、RACK重传
- rack-legacy:在任何机架服务器下运行 CGI 和 PHP 等遗留环境
- Spark RDD简介