Chapter 3: Ruby基础

为什么Ruby?

先从另一个列子说起,

不知道大家有没有听说过Metasploit这一安全界的渗透测试神器。最初版本由Perl写成,最终历经18个月,也就是一年半,用Ruby重写了整个版本,V3。对于为什么选择Ruby,Metasploit团队应该是给出了非常中肯的原因:

Metasploit的团队成员在比较了Python、Perl和C++之类的语言之后,给出了选择Ruby的好几个原因。

最主要原因,就是Ruby是简单而强大的一门解释性语言。Ruby的内省机制非常强大,以及Ruby提供的面向对象实现也非常适合Metasploit的一些要求,比如自动化、动态的构建一些可以复用的代码,这是关键因素。这是Perl等其他语言无法达到的。

其他原因就比较次要,比如最初看中了Ruby1.8的绿色线程模型的平台无关性,当然Ruby1.9里已经是本地线程了。还有Metasploit团队的开发人员的喜好, 他们最讨厌Python的缩进语法,认为那是一种不必要的限制,以及Pthon的父类方法调用和解释器的向后兼容等问题,也放弃了Python。还有C++,它是非解释性语言,也满足不了Metasploit的一些要求。

最终选择了Ruby。

我为什么要举Metasploit的例子呢? 因为我认为Metasploit和Chef很类似, 虽然他们要解决的问题不同,但是他们都是利用了Ruby的元编程及容易DSL特性来实现在自己领域的自动化的一些功能,从而解放了我们人类。甚至在web开发领域享誉盛名的Ruby on Rails框架,也是利用了Ruby这一特性,解放了开发人员。

那么,让我们一起来学习Ruby的这些特性吧。