什么是机架?我可以用它用 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,在出现问题时类似于 400headers 是网络浏览器可以使用的信息,例如有关在其缓存中保留网页多长时间等信息。 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 应用程序吗?的主要内容,如果未能解决你的问题,请参考以下文章

机架错误安装问题。服务器没有启动

是否存在 ruby​​ rack 应用程序的托管? [关闭]

处理机架迷你轮廓仪火焰图的信息过载

十大最流行PHP框架排名

gulp能做什么,前端装逼为何要用它

Ruby 需要'some-gem' 在控制台中工作,而不是在 Eclipse 中?