在Ruby中创建没有框架的web应用程序

在Ruby中创建没有框架的web应用程序,ruby,web-applications,Ruby,Web Applications,我想用Ruby构建一个web应用程序,但我不知道是否有可能不用框架就能实现。我不知道为什么大多数Ruby开发人员使用Rails或Sinatra这样的框架 如何设置一个不基于现有框架的Ruby web应用程序 不使用框架就可以在ruby中制作web应用程序吗 太长;没有阅读 是的,这是绝对可能的。大多数Ruby框架都是在其他中间件库(如web服务器接口)之上使用纯Ruby构建的 Ruby与Web Ruby是一种通用语言;因此,它不是专门为web开发而设计的。例如,PHP是一种为创建web应用程序而

我想用Ruby构建一个web应用程序,但我不知道是否有可能不用框架就能实现。我不知道为什么大多数Ruby开发人员使用Rails或Sinatra这样的框架

如何设置一个不基于现有框架的Ruby web应用程序

不使用框架就可以在ruby中制作web应用程序吗

太长;没有阅读

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

Ruby与Web

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

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

为什么我在谈论Ruby时要告诉你这些?因为Ruby的概念与WSGI非常相似,但可能的例外是它还不是一个标准。它的名字是,它提供了一个接口来处理您不想自己处理的常见底层HTTP/服务器内容,这样我们就可以像使用PHP一样使用Ruby

Ruby、Rack和Apache

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

机架示例

在这篇抽象的演讲中,我们不需要进一步讨论,我们只关注一个例子:

class HelloWorld
    def call(env)
        [200, {"Content-Type" => "text/plain"}, ["Hello world!"]]
    end
end
此示例由机架网站提供,它解释了机架兼容脚本的运行方式:

  • 您可以在web服务器上安装
    rack
    (您可以在Google上找到大量针对您的web服务器的教程)
  • 在根文件夹中创建一个
    config.ru
    文件(
    .ru
    主要是Ruby)
  • 你可以粘贴那个脚本
  • 您可以使用
    run
    方法运行它
等等,我们有一个网络服务器界面。
env
散列包含来自当前请求的环境变量,您返回的数组包含3个组件:

  • 响应状态。200代表“一切正常”。404代表“未找到”。等等
  • HTTP头文件。这些描述了响应体。它的长度。它的内容。等等
  • 响应主体。它包含应用程序的实际输出。HTML,JSON,XML,HXML,简单文本。。。不管怎样
  • 例如,在PHP中,所有这些都是自动完成的。当你做
    回显“Hello”时响应状态和标题由PHP解释器为您生成

    关于备选方案的说明

    你可以随心所欲地在这一领域挖掘,但下面列出的大多数技术要么已被弃用,要么社区极不鼓励使用

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

    一些人想通过加快速度来恢复这个界面。由此,猜猜看,出现了什么,或者FastCGI。这项技术的使用频率比你想象的要高。有些PHP脚本有时会转换为FCGI脚本,以使它们运行得更快。我不想进一步讨论这个话题,因为还有很多其他的参考文献

    最后,您可以创建自己的web服务器。实际上,为了使用Ruby,您并没有被迫使用Ruby创建web服务器。从理论上讲,web服务器非常简单:

  • 侦听端口(大多数情况下为80),直到收到请求
  • 处理请求
  • 输出响应
  • 转到1
  • 在现实环境中,您不希望自己为生产网站实现web服务器。所以我绝对不鼓励这样做

    如果是,为什么大多数ruby web开发人员都选择框架

    专业人士

    框架的目的是使您的开发更快。如果你有最后期限,你不想处理低级的东西,你会喜欢一个
    frameworkbuild-blog
    命令,它可以为你管理尽可能多的无聊的事情,让你专注于真正的应用程序设计

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

    缺点

    有些框架可能太大,无法满足您的需要,而另一些框架可能太小。在Ruby环境中,有巨大的Rails和它的弟弟Sinatra。一个是巨大的,另一个是非常小的,真的可以避开你的路。有时候你想要介于两者之间的东西

    框架通常非常通用。这意味着您必须配置对您的上下文来说显而易见的东西

    框架包含的代码比您需要的多。这是一个你可以自己推断的事实。这通常意味着更复杂和更直接的错误(ev