gpt4 book ai didi

ruby - 在没有框架的情况下在 Ruby 中创建 Web 应用程序

转载 作者:数据小太阳 更新时间:2023-10-29 06:44:47 25 4
gpt4 key购买 nike

就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the help center为指导。




8年前关闭。




我想用 Ruby 构建一个 Web 应用程序,但我不知道是否可以在不使用框架的情况下这样做。我不知道为什么大多数 Ruby 开发人员使用像 Rails 或 Sinatra 这样的框架。

如何设置不基于现有框架的 Ruby Web 应用程序?

最佳答案

Is it possible to make a web app in ruby without using a framework?



太长;没看

是的,这绝对是可能的。大多数 Ruby 框架都是在其他中间件库(如 Web 服务器接口(interface))之上使用纯 Ruby 构建的。

Ruby 和网络

Ruby 是一种通用语言;因此它不是专门为 Web 开发而设计的。例如,PHP 是一种用于创建 Web 应用程序的语言。在 Ruby 中,您将需要一些库来正确处理 HTTP header 和 Web 特定元素。

例如,在 Python(另一种通用编程语言)中,我们有一个名为 WSGI 的标准 Web 服务器接口(interface)规范。 (Web 服务器网关接口(interface))。每个实现 WSGI 规范的服务器都被称为 WSGI 兼容的。任何兼容 WSGI 的服务器都可以以相同的方式运行相同的 WSGI Python 脚本。

为什么我在谈论 Ruby 时要告诉你这个?因为 Ruby 有一个与 WSGI 非常相似的概念,可能的异常(exception)是它还不是一个标准。它的名字是 Rack ,并且它提供了一个接口(interface)来处理您不想自己处理的常见低级 HTTP/Server 内容,以便我们可以像使用 PHP 一样使用 Ruby。

Ruby、Rack 和 Apache

让我们举一个真实的例子:Apache。 Apache 是最常见的 Web 服务器之一。 PHP 如何与 Apache 一起工作?与 mod_php . Python WSGI 兼容的应用程序如何与 Apache 一起工作?与 mod_wsgi .与 Ruby Rack 兼容的应用程序如何与 Apache 一起工作?与 mod_rack .你能看到这里的模式吗? Web 服务器需要知道如何将您的应用程序正确链接到请求/响应 Web 上下文。

机架示例

在这个抽象的谈话中没有进一步处理,让我们关注一个例子:
class HelloWorld
def call(env)
[200, {"Content-Type" => "text/plain"}, ["Hello world!"]]
end
end

此示例由 Rack 网站提供,它解释了 Rack 兼容脚本的运行方式:
  • 您安装 rack在您的网络服务器上(您会在 Google 上找到大量专门针对您的网络服务器的教程)
  • 您创建了一个 config.ru根文件夹中的文件( .ru 主要是 Ruby)
  • 您粘贴该脚本
  • 你用 run 运行它方法

  • 等等,我们有一个 Web 服务器界面。 env hash 包含来自当前请求的环境变量,您返回的数组包含 3 个组件:
  • 响应状态 . 200 代表“一切正常”。 404 代表“未找到”。等等。
  • HTTP header .这些描述了响应主体。它的长度。其内容。等等。
  • 响应正文 .这包含应用程序的实际输出。 HTML、JSON、XML、HXML、简单文本……随便。

  • 例如在 PHP 中,所有这些都是自动完成的。当您这样做时 echo "Hello"; PHP 解释器会为您生成响应状态和 header 。

    关于替代品的说明

    你可以在这个领域中挖掘你想要的一切,但下面列出的大多数技术要么被弃用,要么社区强烈反对使用它们。

    在 Web 的最初几年,有一个通用接口(interface)用于在服务器端运行 Perl、Python、Ruby、C 脚本: CGI或通用网关接口(interface)。这是一个几乎可以被任何编程语言使用的接口(interface),但它通常被认为很慢。

    一些人认为通过使其更快来恢复此界面。然后,你猜怎么着,出现了 FCGI ,或 FastCGI。这项技术的使用频率比您想象的要高。某些 PHP 脚本有时会转换为 FCGI 脚本,以使它们运行得更快。我不想进一步讨论这个主题,因为那里有许多其他引用资料。

    最后,您可以创建自己的 Web 服务器。您实际上并不是为了使用 Ruby 而被迫使用 Ruby 创建 Web 服务器。从理论上讲,Web 服务器非常简单:
  • 监听端口(大部分时间为 80),直到请求传入
  • 处理请求
  • 输出响应
  • 转到 1

  • 在现实生活环境中,您不希望自己为生产网站实现 Web 服务器。所以我绝对不鼓励这样做。

    And if yes, why are frameworks chosen by most ruby web developers?



    优点

    框架的目的是使您的开发速度更快。如果你有截止日期,你不想处理低级的东西,你会喜欢 framework build -blog命令为您管理尽可能多的无聊事情,让您专注于真正的应用程序设计。

    框架通常是开源的,并且拥有庞大的社区,这有助于快速改进框架。您可以很容易地理解,通过 10.000 双眼睛看到的代码中的错误比您为自己编写的代码快 10.000 倍。

    缺点

    有些框架可能太大而无法满足您的需求,而其他框架可能太小。在 Ruby 上下文中有巨大的 Rails 和它的小兄弟 Sinatra。一个是巨大的,另一个非常小,真的让你无法自拔。有时你想要介于两者之间的东西。

    框架通常非常通用。这意味着您必须配置对您的上下文来说似乎很明显的东西。

    框架包含比您需要的更多的代码。这是你可以自己推断的事实。这通常意味着更多的复杂性和更多的错误(即使周围的庞大社区对此进行了补偿)。

    关于ruby - 在没有框架的情况下在 Ruby 中创建 Web 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15875941/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com