
这篇文章是程序员Krzysztof Kopidlowski致力于研究Ruby on Rails的好处的
文章的翻译。 该材料主要是新手程序员感兴趣的,然后才是专业人员感兴趣的。
Ruby on Rails可以节省您通常花在开发上的时间。 仅仅因为使用此框架时,代码会更少,并且功能将保持不变。
Skillbox建议:实用课程“专业Web开发人员” 。
我们提醒您: 对于所有“ Habr”读者来说,使用“ Habr”促销代码注册任何Skillbox课程时均可享受10,000卢布的折扣。
从Java到Ruby
对我来说,使用Ruby可以节省大量时间。 我可以专注于方法和逻辑,而不是一遍一遍地乱搞很多代码。 我曾经以为Java是改变游戏规则的人,但是在了解Ruby on Rails之后,我印象更加深刻。
大约一年以来,我一直在用Java编写并进行后端开发。 在我看来,任何使用该语言的程序员都可以理解我在说什么。 假设您要编写一个端点以返回.zip文件。 您可以解决此问题而没有任何特殊问题,但这需要数百行代码。
但是,如果我告诉您可以省去几十行呢?

这是Ruby-一种面向对象的,动态的,反射的,解释性的高级编程语言。 它具有独立于操作系统的多线程实现,强大的动态类型,垃圾回收器以及许多其他功能。 它编写了许多Web应用程序,包括GitHub和Twitter。
Ruby减少代码
也许您在问自己,通常如何在保持上述逻辑的同时将代码量减少到几十行。 这确实有可能,而且我们还没有在谈论框架,而是在谈论纯语言。
例如,如果您有一个数组,并且想要将所有元素增加2,然后在Java中以相反的顺序返回它们,则代码将如下所示(使用List接口):
import java.util.*; import java.util.stream.Stream; import static java.util.Collections.reverseOrder; import static java.util.stream.Collectors.toList; public class MyClass { public static void main(String args[]) { List<Integer> list = Stream.of(1, 2, 3) .map(val -> val + 2) .sorted(reverseOrder()) .collect(toList()); list.forEach(System.out::println); } }
Ruby中的内容如下所示:
数组= Array.new(5,2)
array.map {| x | x + 2} .reverse区别是显而易见的。 而且您不需要导入类。
动态打字
在确定确实没有太多的代码行之后,我们可以考虑以下示例中未设置变量类型的事实。 的确如此-事实是,在Ruby中,所有变量都是动态键入的。
如果要编写一个带有两个参数的方法,则无需指定它们的类型,而只需关注逻辑即可。 结果:更少的代码,同时更优质,更清洁。
Ruby还有许多专有的方法可以加快编码速度。 在编写程序时,我经常使用Hash转换为Array,然后转换为JSON。 在Ruby中,我只需一行就可以执行它!
在轨道上
最受欢迎的Ruby框架是Rails。 它提供的语言功能与Spring for Java大致相同。 我想分享一些对您可能有用的发现。
所有端点集中在一处我喜欢Rails的一件事是,我只需要一个文件即可声明所有端点。 我总是可以使用终端命令$ rake route来查看它们。 当您需要根据已编写的内容执行某些操作时,这对于大型项目是一个不错的选择。
此外,您可以将端点分为几组。 例如,当您有一个用户模型时,可以为其所有成员设置路径,以便每个端点自动获得自己的标识符。
您不必对相同的端点使用不同的参数。 在Rails中,默认情况下,您可以将任何参数传递给端点,并仅验证要在控制器中使用的参数。
def user_params
params.require(:用户).permit(:名称,:姓,:生日,:化身)
结束Rails数据库所有迁移都在此应用程序中进行了注册,因此在不同设备上建立数据库归结于执行一个命令:$ bundle rake db:setup。 因此,根本不需要外部客户端来配置或使用数据库。
不会,您创建并转移到另一台设备的数据库不会为空:在Rails应用程序中有一个名为seed.rb的文件,您可以在其中指定应用程序正常工作所需的不同模型的所有记录。 结果,该模型仅需要几行代码。
$ bundle rake db:setup命令具有三个功能:
- 如果数据库尚不存在,则创建一个数据库;
- 运行所有迁移;
- 输入种子文件中的所有源数据。
代码真的很干净:ActiveRecords只是编写您需要实现的方法,而不是属性。
在Java的Hibernate框架中,您需要使用注释注册所有属性,然后为需要修改的属性设置设置器。 在这种情况下,您会在输出上获得大量代码。
在Rails中,这只占一行。 数据库模式保存在schema.rb文件中,该文件在迁移开始时自动创建。 并且该类不需要设置器或属性。 当需要后者时,只需编写以下内容:Model.attribute-仅此而已。
如上所述,使用Rails,您可以专注于项目的逻辑和方法,而不是代码。

结论
Ruby on Rails为您提供了强大的工具,例如动态类型输入或byebugging,可以很好地加快编程过程。
如果您想学习Web应用程序开发课程,请务必尝试编写一个小型Rails应用程序以了解其工作原理。 学习新知识永远不会太晚-即使您更喜欢传统工具。