什么是机架?我可以用它用 Ruby 构建 Web 应用程序吗?
Posted
技术标签:
【中文标题】什么是机架?我可以用它用 Ruby 构建 Web 应用程序吗?【英文标题】:What is rack? can I use it build web apps with Ruby? 【发布时间】:2011-07-12 22:06:41 【问题描述】:红宝石新手警报! (嘿,押韵:))
我已经阅读了官方定义,但仍然空手而归。当他们说中间件时,究竟是什么?使用 ruby 和 https 的目的是什么?
patnaik 博客上的小教程让事情变得更清晰,但我如何在 localhost 上使用它?我已经安装了 ruby 1.9.2 以及 rack gem 和 mongrel 服务器。
我先开始 mongrel 吗?怎么样?
【问题讨论】:
【参考方案1】:您最好搜索其他对您有意义的问题和答案。试试“Rails 入门”或“Ruby Web 开发”。这个网站上很多不同的主题都专门针对这个主题,所以你可能会省去一些麻烦......
暂时忽略您问题的细节,您似乎想学习 Ruby 并构建 Web 应用程序。在开始研究 Rack 或 Mongrel 或其他任何东西之前,您应该知道有 2 个完善的框架可以帮助构建 Ruby Web 应用程序。第一个是 Ruby on Rails,另一个是 Sinatra。还有很多其他的,但这些是 Stack Overflow 和整个互联网上记录最充分的。
查看以下链接了解一些背景...
www.rubyonrails.org SO: building-a-website-best-practice-and-architecture-with-ruby www.railstutorial.org SO: learning-ruby-on-rails如果您仍然渴望回答您的问题 - “什么是机架?”,您应该遵循相同的过程,并最终得到这个 Stack Overflow 答案:
What is Rack middleware?
祝你好运!
【讨论】:
谢谢努比!我现在要睡觉了,但“中间件”这个词仍然在我耳边响起——真是一个可怕的词!【参考方案2】:只是添加对 Rack 的简单解释(因为我觉得缺少):
Rack 基本上是 Web 应用程序可以与 Web 服务器通信的一种方式。沟通是这样的:
-
网络服务器将
environment
告知应用程序 - 这主要包含用户作为请求发送的内容 - url、标头、是 GET 还是 POST 等。
Web 应用程序响应三件事:
status
代码在一切正常时类似于 200
,在出现问题时类似于 400
。
headers
是网络浏览器可以使用的信息,例如有关在其缓存中保留网页多长时间等信息。
body
,这是您在浏览器中看到的实际网页。
这两个步骤或多或少可以定义网络应用程序工作的整个过程。
所以一个非常简单的 Rack 应用程序可能如下所示:
class MyApp
def call(environment) # this method has to be named call
[200, # the status code
"Content-Type" => "text/plain", "Content-length" => "11" , # headers
["Hello world"]] # the body
end
end
# presuming you have rack & webrick
if $0 == __FILE__
require 'rack'
Rack::Handler::WEBrick.run MyApp.new
end
【讨论】:
是的,我可能真的应该回答这个问题......很好的补充。 所以我的问题,Jakub,是:我如何真正运行你在这里展示的那个非常简单的基本应用程序? 您应该可以使用ruby my_app.rb
运行它。但是,如果您有一个较旧的 ruby,您可能需要在顶部添加一个 require "rubygems"
行,而我只使用 sudo
运行它并在 WEBrick.run
调用中添加一个 :Port => 7890
参数。
@JakubHampl 我认为这段代码 sn-p 将在 app
的开头运行。该文件将如何自动运行【参考方案3】:
非常好的答案确实是的。对于我的两分钱,我将添加此内容,因为如果您知道如何在此处获取幕后文档,您会发现很多信息,因为我将其存储在这里,而绝不是我所拥有的全部。 http://myrackapps.herokuapp.com/
【讨论】:
以上是关于什么是机架?我可以用它用 Ruby 构建 Web 应用程序吗?的主要内容,如果未能解决你的问题,请参考以下文章