# 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的这些特性吧。
- 序
- Chapter 1: 初识Chef
- 一些背景
- Chef vs Puppet
- Chapter 2: Chef应用
- Chef架构
- Chef能做什么
- Chef组件
- Chef环境安装
- chef-server
- opscode-chef
- chef-solo
- Chef实战
- 实战前的必修理论
- 使用Chef
- Chapter 3: Ruby基础
- 对象与方法
- 标识符
- 类与模块
- 数据类型
- 真与假
- 控制语句
- 代码块
- Chapter 4: Chef源码架构
- Rubygems与gem
- bundler
- Chef源码组织
- Chapter 5: Rails基础
- Rails是什么
- MVC架构
- Restful
- Rails组成与项目结构
- Chapter 6: Chef Server WebUI
- Chef Server Webui组织结构
- Chef Rest API
- 参考