很多人混淆Ruby和Ruby on Rails。因此,尽管它们有一些主要区别,但它们相似的名称和共同的起源仍然会令人困惑,特别是对于新手开发者。
本文将解决这种困惑,探讨它们的关联历史,并提供一些关于何时使用Ruby进行编码以及何时直接使用Ruby on Rails进行构建的入门指南。
从Ruby到Rails
那么,Ruby和Ruby on Rails有何不同呢?
Ruby是一种广泛使用的开源面向对象的通用脚本语言,它是在C编程语言的基础上构建的。它是一个跨平台语言,支持Windows、macOS和Linux操作系统。Ruby的设计以简单和开发人员的愉悦感为核心,广泛应用于Web应用程序开发。
Ruby on Rails,有时简称为”Rails”,是一个基于模型-视图-控制器(MVC)架构模式的开源Web开发框架。你可以使用Rails来开发基于数据库的Web应用程序,它使用了Ruby语言。
让我们对它们进行更深入的探讨。
什么是Ruby?
Ruby是由日本软件程序员松本行弘(Yukihiro Matsumoto,也被称为Matz)于1993年创建的。Ruby的第一个版本,Ruby 0.95,于1995年12月21日发布。
Ruby与Perl和Python一样,是一种高级解释型编程语言,旨在提高程序员的生产力。Matz将Ruby设计为一种面向对象的语言,与Ada类似,因此它在性能和简单性之间取得了完美的平衡。
根据Matz的说法,他在创建Ruby时的指导原则是创建一种他自己喜欢编写的编程语言,也让其他开发者使用起来有趣,并尽量减少编程所需的努力。
在过去的十年中,Ruby一直在最受欢迎的编程语言中保持稳定的排名。Ruby吸引许多开发者的原因是其简洁性和对初学者友好的低学习曲线。
让我们讨论一下Ruby的一些主要特点。
多功能的编程语言
Ruby被认为是一种纯粹的面向对象语言。在Ruby中,一切都是对象。即使是像整数这样的原始数据类型也有方法、实例变量,并支持方法链。
例如,您可以在一个整数上使用两个不同的方法,使用点表示法在一行代码中找到绝对值并将其立方。请看下面的代码。在这里, abs
用于找到-3的绝对值,而 pow(3)
将-3的绝对值提升至3次方。
value = -3.abs.pow(3)
Ruby是一种通用的编程语言,开发者可以使用它来创建不同类型的应用程序。它还支持函数式编程方法,其中程序是一组按照函数等效的过程分组的指令。
库
Ruby为开发者提供了广泛的内置库。它还提供了一个名为RubyGems的包管理器,其中包含了由Ruby社区中的其他开发者创造的一系列包,称为gems。这些gems可以在现有的Ruby应用程序的功能和功能上进行构建或更改。
每个gem包含代码和相应的测试工具、文档和一个gemspec文件,gemspec文件中包含有关这个gem的信息。gemspec文件包含了gem的名称、描述以及它所需的任何依赖项。
例如,考虑一下流行的k8s-client gem。Ruby开发者可以将这个gem添加到他们的应用程序中,从而可以访问Kubernetes客户端库。
还有一些特定用例的gems,比如nytimes_top_stories。顾名思义,您可以将这个gem加入到您的应用程序中,从纽约时报获取最新的头条新闻。
Ruby的用途
Ruby最常见的用途包括网站开发、静态网站生成器(前端开发)、服务器端应用程序、DevOps、自动化、命令行工具和数据处理应用程序。
一些例子包括:
- Ruby on Rails和Padrino:Web应用程序框架。是的,Ruby正是支持与其进行比较的同一框架。
- Jekyll:一个静态网站生成器。
- Capybara和Minitest:自动化和测试工具。
- Chef和Puppet:DevOps平台。
- Redis:数据处理和存储工具。
- Passenger:一个Web和应用服务器。
Ruby的优缺点
相比其他编程语言,Ruby提供了许多优势。它也有一些缺点。下面的列表重点介绍了Ruby的优点和缺点。在决定是否选择Ruby作为您的用例语言,或是选择类似Python或C#的语言时,请考虑这些要点。
优点:
- 易于使用,并提供了开发所需的开箱即用功能。
- 拥有友好社区开发的许多第三方库。
- 旨在提高生产力和减少工作量,因此开发速度比其他语言更快。
缺点:
- 由于高内存消耗和低效的垃圾回收机制,性能可能较慢。
- 虽然是一种通用语言,但更适用于Web开发,其他领域如桌面开发表现较差。
- 尽管引入以来已经得到了很多的发展,但仍被视为一种小众语言。因此,与Python等其他语言相比,它吸引的开发者数量较少。
什么是Ruby on Rails?
Ruby on Rails是使用Ruby开发Web应用程序的最流行的框架之一,可在MIT许可下轻松使用。它也是开发者学习Ruby的最常见原因之一。作为一个框架,Ruby on Rails通过提供预先构建的结构和构建Web应用程序所需的所有组件来简化Web应用程序的创建,因此开发者不必从头开始创建一切。
Ruby on Rails项目的预建结构。
使用MVC架构,您可以使用Ruby on Rails创建跨前后端的全栈应用程序。
David Heinemeier Hansson于2004年将Ruby on Rails发布为开源项目。在公司37Signals开发项目管理工具Basecamp期间,Hansson创建了Ruby on Rails。Ruby on Rails非常注重“convention over configuration”(CoC)范 paradigm 和“don't repeat yourself”(DRY)原则。CoC意味着如果开发者遵循预定义的约定,就能编写更少的代码和进行更少的配置。DRY避免了冗余,减少了软件模式的重复。
与Ruby类似,Ruby on Rails在早期更为普遍,在新框架出现后有所退步。尽管如此,它在多年的发展中不断成熟,并拥有大量的追随者。开发者仍然选择Rails,因为它遵循约定,为开发提供结构,使代码易于阅读和编写,并加快了开发过程和上市时间。
Ruby on Rails的用途
尽管Ruby有许多用例,但Ruby on Rails的焦点更为明确。它是一个专门用于开发Web应用程序的框架。尽管它的关注范围可能较窄,但它所做的事情做得非常好。Ruby on Rails已被用于创建一些最受欢迎的Web应用程序,如GitHub、Twitch、Soundcloud、Shopify、Hulu、Airbnb和BaseCamp。
Ruby on Rails的优点和缺点
作为一个开源框架,Ruby on Rails提供了一些开发者可以欣赏的优点。然而,该框架并非没有妥协之处。由于选择框架与选择编程语言同样重要,请考虑以下因素以确保您做出正确的决策。
优点:
- 开源框架 – 免费使用。
- 受益于Ruby开发的成熟生态系统。
- 内置了一些安全措施,并默认启用,包括内置的XSS、CSRF和SQL注入攻击防护。
- 大量的库(或gems)使得Ruby on Rails成为一个非常高效的框架。
- 允许更快的原型开发,适合MVP。
缺点:
- 大量的依赖gem导致启动时间较慢,对开发者的生产力产生负面影响。
- 预定义的结构和开箱即用的组件使得使用Ruby on Rails构建常规Web应用程序非常简单。然而,这导致灵活性不足,使得定制变得困难。
- 快速开发时间带来的是较慢的性能,通常由于服务器和数据库架构问题导致。在应用程序扩展时,这些问题变得更加明显。
Ruby vs Ruby on Rails: 关键区别
Ruby vs Ruby on Rails: 关键区别
特点 | Ruby | Ruby on Rails |
---|---|---|
语言 vs 框架 | 一种由C语言编写的编程语言 | 一个由Ruby编写的Web开发框架,它使用Ruby作为编程语言。 |
安全性 | 所有数据都可以封装为对象,使语言更加安全 | 防止跨站脚本(XSS),预防SQL注入,防止跨站请求伪造(CSRF),防止日志漏洞等 |
原则 | 基于用户界面设计原则,旨在提高开发人员的生产力 | 强调使用CoC(Convention over Configuration)和DRY(Don't Repeat Yourself)原则 |
用途 | 通用的编程语言,可用于Web、桌面和其他软件工具 | 专门用于Web开发 |
原文地址:https://www.wbolt.com/ruby-vs-ruby-on-rails.html