有哪些值得推荐的 Ruby 学习流程

Python016

有哪些值得推荐的 Ruby 学习流程,第1张

快速学习Ruby on Rails,这应该是个伪命题,没有什么事情是能够快速学习的,尤其是编程,而且是Rails这样极其复杂的框架,它由无数顶级高手成年累月的心血堆砌而成,融合了web开发领域内几乎全部的最佳实践。

如果想快速入门,那么其他一些人提过的 Rails Tutorial,或者 Rails for Zombies 都是很好的选择,但相信我,即便你能快速做出简单的网站,依旧会对整个开发环境和知识体系一头雾水,在面临现实世界的需求时往往会捉襟见肘,花费更多的时间来补充缺失的知识。

所以,我认为如果你的目的不是创业,而是学习的话,全面有效成体系地吸收知识是更好的选择,这方面,读书是最好的方式,不过市场上滥竽充数的书籍实在很多,对于新手来说,怎样用有限的时间读最合适的书,是很重要的。

我在学习和使用Ruby与Rails的过程中,读过大部分在Amazon排名靠前的相关书籍,当然有些不错的书,随着技术的进化,已经略显陈旧。以下给出的阅读列表,是在现在依然有效的选择:

起点阶段,强烈建议至少具备如下知识后再开始Rails开发

Html and CSS

结构和样式不止是设计人员的事,web开发必须要熟悉

Head First HTML与CSS(第2版)

虽然已经出版了很久,但依然是最好的Html&CSS入门书

Linux

几乎所有的开发环境都严重依赖于GNU/Linux为主的命令行环境,因此需要学习linux的基本概念和操作

The Linux Command Line

目前最好的linux command line学习指南,生动,清晰,详细,无论是菜鸟还是多年的老手都能从中受益,远超过之前作为标准教材的practical guide to xx系列。No starch这个出版社既有延续至今的Hacker精神,也懂得如何发掘有趣的作者

HTTP and Rest

Web开发对于Http的深入理解是必须的,另外Rails还使用Rest协议作为基本指导原则,所以需要深入理解Http和Rest

RESTful Web Services中文版

这本是目前为止最好的描述HTTP与Rest的作品,可以让你重新认识Web,更何况其中的示例是Ruby语言(因为这本书合著者是Sam Ruby)

Programming

程序员修炼之道

这本书告诉你,如何做才能成为一个注重实效的程序员,涉及了非常多的理念和实践,虽然都不深入,但至少让你知道世界是什么样子的,是任何程序员最应该在新手阶段读的书,也是对整个业界影响最大的经典之一

Git and Version Control

版本控制在项目中是一开始就要使用的,不止是开发,一切事情都需要版本控制

Pro Git

这本是迄今为止讲解Git最清楚最深入的书,对于新手,不建议看后面的实现原理,先读前几章了解概念和学习日常实践使用是最重要的

Ruby

如果只是在Rails中使用的Ruby,可以使用一些免费的快速入门教程,不过,系统地学习Ruby,可以了解到很多面向对象开发或函数式编程的思想,对于熟悉和掌握Rails帮助非常大

Programming Ruby 1.9

公认的Ruby入门经典,不过对于新手来说,只推荐前半的入门部分,高阶内容可以稍后再来学习

Rails

Learn Web Development with the Ruby on Rails Tutorial

最后是Rails自身的学习,这本书的最新版涵盖Rails4,是目前为止最好最完整的Rails入门教程,可以在线看,还有大量的视频搭配

进阶阶段,具备下面的知识,可以让你或多或少地理解Rails Way,并真正开始写出合格的Rails应用

Programming

重构

这本"重构"是当年石破天惊的经典著作,讲解如何持续改进和让代码优雅干净,拥有直到现在还依然适用的价值,尤其为Ruby On Rails社区广泛接受,这本书有将其中的Java语言换成Ruby后的[版本](重构(Ruby版) (豆瓣))

UNIX编程艺术

由公认的黑客领袖之一Eric S.Raymond撰写的这本书总结了长久以来的Unix领域中的设计和开发哲学,思想乃至文化体系,是了解Ruby和Rails诞生于其中的Unix黑客文化必不可少的读物

Ruby

深入理解Ruby,除了上边提到的Programming Ruby 1.9以及重构等通用编程书之外,还有以下几个选择

Ruby编程语言

Ruby之父松本行弘和O'Reilly的王牌作者合作,诞生了这本讲解Ruby最透彻的经典著作

Eloquent Ruby

Ruby社区的编程指南之一,介绍了Ruby社群的文化,品味和编程原则,强烈地反映了Ruby程序员的共同特质: 幽默,健谈,追求乐趣,热爱生活

Test

测试驱动开发(TDD)以及之后进化的行为驱动开发(BDD)是Ruby和Rails社群的核心文化之一,只有彻底理解并运用BDD,才是合格的Rails开发者

The RSpec Book

唯一的也是必读的BDD介绍作品,由RSpec核心成员撰写

Git

可以坚持把Pro Git的后半部分学习完,没有更深入和清楚的书了

CSS

CSS权威指南

Eric Meyer的CSS权威指南至今仍然是CSS2讲解最全面和最深入的参考书

Javascript and jQuery

Web开发的交互性会越来越多,Javascript已经成为了相当严肃的编程语言

JavaScript权威指南

目前最全面最好的Javascript学习书籍

jQuery基础教程 (第4版)

唯一尚可称得上紧跟jQuery发展脚步的学习指南

Rails

Rails发展的实在太快了,最好的方法也许是跟踪在线文档,不过还是推荐这本

The Rails 4 Way

这本书的Rails 3版本讲解Rails的哲学和细节相当到位,不过Rails 4版本还没有出版,非常值得在今年3月份第一时间拿下它。

---

More

上边的书籍都读过的话,可能你终于能了解到Rails背后涉及的概念和实践有多么庞大惊人,也了解到了还有多么深的知识鸿沟需要跨越,了解到了一切都还只是开始,不过值得庆幸的是,一切事情都需要个开始

一.

数组

  数组的创建 names = ["shiwanyin","jingshang","dapao","xishuai"]

  数组对象 数组对象未确定时,用[]表示一个空数组对象。

  从数组中抽取对象 names[0]

    print "第一个名字为:",names[0],"。\n"

  将对象保存到数组中  支持多种不同对象的混合保存。

 

  数组的大小

    array.size

  数组的循环

    names.each do |变量|

      希望循环的处理

    end

15散列类

    15.1复习散列

    15.2散列的创建

      15.2.1使用{}

        {键=>值}

        像下面那样指定键值对,键值对之间用逗号,隔开

        h1 = {"a"=>"b","c"=>"d"}

        p h1["a"]  #=>"b"

    

        用符号作为键时

        {键:值}

        

        h2 = {a:"b",c:"d"}

        p h2  #=>{:a=>"b",:c=>"d"}

        

      15.2.2使用Hash.new

        用来创建新的散列的方法。

        指定参数值返回

        

    15.3 值的获取与设定

      与数组一样,散列也是用[]来实现与键相对应的元素值的获取与设定的。

      h = Hash.new

      h["R"] = "Ruby"

      p h["R"] #=>"Ruby"

      

      还可以用store方法设定值,用fetch方法获取值。下面的例子的执行结果与上面的例子是一样的。

      h = hash.new

      h.store("R","Ruby")

      p h.fetch("R")  #=>"Ruby"、(如果散列中不存在指定的键,程序就会发生异常)

      对fetch方法指定第二个参数,那么该参数值就会作为键不存在是散列的默认值。

      h = Hash.new

      p h.fetch("N"){String.new} #=>""

      

      

    15.3.1

      一次性获取所有的键值。由于散列是键值对形式的数据类型,因此获取键值的方法是分开的。

      h = {"a" = "b","c" = "d"}

      p h.keys  #=>["a","c"]

      p h.values #=>["b","d"]

      p h.to_a   #=>[["a","b"],["c","d"]]

      除了返回数组,使用迭代器获取散列值。

Number无需声明

字符串

  14.1字符串的创建

    str1 = "字符串";str2 = '字符串'。

    使用“”时可以执行用#{}括起来的Ruby式子。 这个#{}就称为内嵌表达式。

    

  14.1.1 %Q和%q

    创建包含“‘的字符串,使用%Q或者%q会比使用\"  \'更简单

    desc = %Q{Ruby的字符串中也可以使用’‘和”“}     %Q相当于用“”创建字符串

    str = %q|Ruby said, 'Hello world'             %q相当于用‘’创建字符串

    

  14.1.2

    使用Here Document

    Here Document 是源自于Unix的shell的一种程序写法。

    使用<<创建字符串(创建包含换行的长字符串时这个方法是最简单的)

    <<"结束标识符"

    字符串内容

    结束标识符

    

    <<后面的结束标识符可以用“”括着的字符串(转义字符和内嵌表达式)或者用‘’括着的字符串定义(原封不动的显示)。

    Here Document 的结束标识符一定要在行首。在程序缩进较深的地方会出现缩进乱掉的情况。

      使用<<- 代替 <<,忽略掉结束标识符前的空格和制表符。结束标识符就没有必要写在行首。

range类

r1=1..5     #定义范围对象r1,包括元素1,2,3,4,5

r2=Range.new(1,5)  #等价与1..5

r3=1...5     #定义范围对象r3,包括元素2,3,4

r4=Range.new(1,5,true) #等价与1...5

二。循环

1. times方法

在前面已经有提到过了,语法如下:

复制代码 代码如下:

循环次数.times do                    循环次数.times {

      重复执行的动作                          重复执行的动作              

end                                               }

#也可以在times模块中加入变量

5.times { |i|

    print "This is the", i+1, " time. \n"

}

# i变量是从0开始计算的

2. for 语句

复制代码 代码如下:

语法:

for 变量 in 开始数值..结束数值 do

   反复执行的动作

end

# do是可以省略的

from = 0

to = 20

sum = 0

for i in from..to

   sum += 1

end

语法:

for 变量 in 对象

  反复执行的动作

end

names = ["Windy", "Cindy", "Jack", "Hugo"]

for name in names

   print name, " likes Ruby. \n"

end

第二个语法的for语句,与java中的for each语句非常类似,for (i in list?) {...}

3. while 语句

while语句与JAVA中也是类似的

复制代码 代码如下:

语法:

while 条件 do

   反复执行的动作

end

a = 1

sum = 0

while a <10 do

   sum += a

   i += a

end

4. until 语句

其语法与while语句类似,只是只有条件不符合的时候,才会反复执行循环

复制代码 代码如下:

语法:

until 条件 do

    反复执行的动作

end

# do可以省略

sum = 0

until sum >50

   sum += 1

end

print sum

# 以上until循环可以转换成下面的while循环

while !(sum >50)

   sum += 1

end

5. each 方法

在前面已经提到过这个方法了,这里就简要记录下语法

复制代码 代码如下:

对象.each { |变量|

想要反复执行的动作

}

6. loop方法

它是一种没有结束条件的方法,只是不断进行循环处理,示例如下:

复制代码 代码如下:

loop {

   print "Ruby"

}

三。运算符

算术运算符+-*/   取余% 平方**

比较运算符  >,<,==,!=,>=,<=,===,<=>,.eql?,equal?(区别最后两个) 前者是判断两个数值是否相同,后者是判断是否为同一个数,如果不懂可以继续追问我。

四。正则表达式 这一部分应该是ruby的特色,建议你好好学学。推荐这个地址给你

http://www.runoob.com/ruby/ruby-regular-expressions.html

纯手打

Ruby 是一门编程语言,Ruby on Rails 是 Ruby 的一个 web 框架,简称 Rails。

有很多人对 Rails 感兴趣,但又不知道从何下手、学习路线是什么,因为在多个场合下回答过类似问题,所以决定整理成文章供大家参观。

有很多人选择直接学习 Rails,在学习使用 Rails 的过程中学习 Ruby。但我觉得这有些本末倒置,我更推崇先学 Ruby 再学 Rails,在对 Ruby 有了一定的了解后再学 Rails 有事半功倍的效果,同时也不会那么有挫败感。

另外,不管你之前是否有过其它编程语言(如 Java、php 等)的经验,都可以直接学 Ruby 编程语言。

废话有些多,下面列出一些指南,注:本文写于 2011 年 11 月 4 日,并于 2014 年 8 月 8 日更新,所有软件版本都以该日为准。

开发平台选择

Mac >Linux >Windows

如果可以,最好不要在 Windows 下折腾 Rails,你会浪费大量时间在解决一些莫名其妙的问题上,而这些问题可能永远不会在 Linux 或 Mac 下出现。

开发工具选择

Mac 下首推 Textmate,因为免费;其次 Sublime Text 3;再次 Macvim,最后是一个 IDE Rubymine。

Linux 和 Windows 下推荐 Sublime Text 3 或 vim,也可以使用 Rubymine。

Ruby 版本选择

推荐 Ruby 2.1.x,备选 Ruby 2.0.x

Rails 版本选择

推荐 Rails 4.1.x,也就是目前的最新版(Rails 4.1.4),因为 Rails 更新非常快,且从不向下兼容,所以我推荐新手直接学最新版。

Ruby 及 Rails 组合推荐

Ruby 2.1 + Rails 4.1.x,备选:Ruby 2.0.x + Rails 4.0.x

版本控制系统选择

大家可能更熟悉 cvs 或 SVN,但在这我推荐使用 Git,可以看《Pro Git》(中文)或《Git Community Book 中文版》。

书籍推荐

先学 Ruby 推荐看《Programming Ruby 1.9 &2.0》(目前只有英文版),需要中文书的话,可以看《Ruby基础教程(第4版)》。

再学 Rails 看《Ruby on Rails Tutorial Learn Rails by Example》(中文版地址)

Ruby 进阶看《The Well-Grounded Rubyist》,Rails 进阶看《The Rails 4 Way》

注:上面有提到,因为 Rails 更新非常快,且不向下兼容,同时中文翻译引进本来就慢,所以导致 Rails 的简体中文资料严重滞后,不推荐阅读。

注:推荐《Ruby on Rails Tutorial Learn Rails by Example》而不是《Agile Web Development With Rails》第 4 版的原因是,我个人觉得前者写的更好更简单易懂。

补充几本繁体中文的书《Ruby on Rails 实战圣经》(还未更新到 rails 4)《Rails 101 - 火速学会 Ruby on Rails》《笨方法学 Ruby》做参考。

必看资料

Rails 官方出的 Guide,英文,会不断更新,内容详实,必看。也可以看中文版,国人同步翻译。

开发环境搭建

Mac 用户可以看「Install Ruby on Rails - Mac OS X」一文,会不断更新。

Linux 用户可以看「Install Ruby on Rails - Ubuntu」一文,会不断更新。

以上两个安装教程非常完善和全面,会让你少踩很多地雷,推荐,虽然是英文的。

如果你英语实在不行,那请阅读 Ruby China 上的「如何快速正确的安装 Ruby, Rails 运行环境」一文。

如果你使用 Windows 操作系统,请使用「RailsInstaller 一键安装包」。

再次提醒,除非迫不得已,请不要在 Windows 下折腾 Rails。

推荐站点

1,Ruby China http://ruby-china.org,目前国内人气比较不错的一个 ruby 和 rails 相关的社区,推荐经常上去逛逛。尤其是 Wiki 部分 更应该多看看,都是非常棒的资料。

2,“Crazy Deep” Rails Examples and Tutorials,如果英语尚可,也推荐经常阅读,这里面有很多非常有用的链接和教程,包括搭建环境等,定期更新,推荐。