原帖:http://wp.xdite.net/?p=1754

=========
學習 Ruby on Rails 最快的途徑無非是直接使用 Rails 撰寫產品。而這個過程中若有 mentor 指導以及 code review,學習進度也會加速不少。

但現實生活中並非如此理想,

第一,並不是每個人都有每天必須要以 Rails 撰寫產品的壓力(not a Rails Developer)。

第二,沒有循序漸進的入門途徑以及沒有 mentor。(Framework 進展太快,導致現有書籍版本跟不上進度,另外具有經驗的 mentor 太少,有的話也沒興趣回答過於初階的問題)

最近幾個月都在訓練 Rails Developer,零碎的東西講了不少遍。懶得一次次重講基礎的東西和開訓練菜單,乾脆整理成文字,以後新人就直接看這篇…

新人需要具備的「一般」基礎技能:

  1. 對 Git 的觀念與技巧掌握。
  2. 對 VIM / Textmate 的基本開發技巧掌握。
  3. 熟悉 Linux Command Line 的操作。

* Git

書單

Peepcode 的 GitPro Git

練習

上 Github 開啟一個專案,練習 git commit , git push , git pull, git branch , git checkout , git merge

* Editor

書單

c9s 的 VIM Hacks 與 Oreilly 的 精通 vi 與 vim 與 Pragmatic 的 TextMate: Power Editing for the Mac

練習

vgod 的 給程式設計師的Vim入門圖解說明 全部練習一遍

* Linux CLI

書單與練習:

Peepcode 的 Meet the Command LineAdvanced Command Line 全部練過一遍

=====

新人需要具備的 Rails 基礎技能:

  1. 可手刻 CRUD ( Create / Read / Update / Delete ) 並且理解 CRUD 中的 params 傳遞方法
  2. route 中 resources 觀念配合 model 裡 has_many 的設計,理解並熟悉 RESTful 觀念。
  3. route 的優先順序與 routes 中 resource / namespace 的實作。
  4. named_scope 、 counter_cache、before_filter
  5. plugin 的使用:restful-authenticationwill_paginatepaperclip
  6. rake 原理以及撰寫 task
  7. ruby on rails 的 production setup 與撰寫 capistrano recipes

書單:(案頭必備)

Ruby Programming — 向 Ruby 之父學程式設計
Ruby for Rails – Rails 開發者必備的 Ruby 學習手冊 (英文新版: The Well-Grounded Rubyist )
碼上就會:Rails敏捷開發網站 (英文新版: Agile Web Development with Rails, Third Edition )
The Rails Way
Ruby Pocket Reference
Rails Recipes
Advanced Rails Recipes: 84 New Ways to Build Stunning Rails Apps

線上工具:(必加書籤)

Ruby API : StringArrayHash
APIDock : Ruby on Rails

練習作業:

(1)開發一個簡易論壇系統。系統要有 Forum 與 Post 兩個 model,寫出 CRUD 介面,並且文章網址是使用 http://example.org/forum/1/post/2 這種表示。

吸收觀念:

* CRUD & migration
        * has_many 與 belongs_to
        * resources 與雙層 resources
        * before_filter : find_event

參考資料:
        
        * 深入淺出 RoR (4-3) – RESTful 與 CRUD action
        * ihower training : Ruby on Rails 入門

( 2)使用者必須能夠 註冊 / 登入,登入後才可以發表 Post,不然只能瀏覽。只有自己的 Post 才能進行修改與刪除。

吸收觀念:

* routes 優先權與 route alias
        * plugin 安裝與使用
        * before_filter : login_required
        * session : current_user
        * attr_accessible / attr_protected

參考資料:

* restful-authentication

( 3)論壇的文章要能夠分頁,每一頁 20 筆,每一個論壇要秀出現在論壇裡有多少 post 數量。可用 params 配合 named_scope 在文章列表排序。

吸收觀念:

* pagination
        * counter_cache
        * named_scope :recent

參考資料:
        
        * will_paginate
        * Railscast : Counter Cache Column
        * Railscast : named_scope

( 4)每篇文章可以上傳附件

吸收觀念:

* form_for multipart

參考資料:

* paperclip

( 5)Admin 可以刪改所有文章,建立一個後台做這件事。網址是 http://example.org/admin/。只有身分是 admin 的人可以進後台。admin 的判別方是 column 裡加一個 boolean,判斷是否 admin。這個 attribute 必須用 attr_accessible / attr_protected 保護。

吸收觀念:
        
        * route : namespace
        * before_filter : require_is_admin

參考資料:

* Namespaces added to routes

( 6)用 Rake 撰寫自動化步驟,生假資料。寫一個 rake 可以達成以下步驟:「砍 db => 建 db => 跑 migration => 生種子資料」,另一個 rake 是生假文章與假論壇。

吸收觀念:

* rake -T
        * rake db:drop ; rake db:create ; rake db:migrate ; rake db:seed
        * rake dev:fake ( 自己寫 namespace : dev, 裡面放一個 task 叫做 fake,fake 資料用 Populator 生)

參考資料:

* Ruby on Rails Rake Tutorial (aka. How rake turned me into an alcoholic)
        * What’s New in Edge Rails: Database Seeding

( 7)在租來的 VPS 上面建置 Ruby on Rails production 環境,使用 Ruby Enterprise 與 mod_rails。使用 capistrano 佈署 application。

吸收觀念:

* cap deploy:setup , cap deploy , cap deploy:rollback , cap deploy:restart

參考資料:

* rails-nginx-passenger-ubuntu
        * AWDR3 的 deploy 章節 , Ruby Pocket Reference 的 capistrano 章節

===

PS. 實際測試的結果是,完全不懂 Ruby on Rails 的新人,從頭帶過大概兩週可以練完這一份作業。

[转]2010 Ruby on Rails 書單 與 練習作業的更多相关文章

  1. Ruby On Rails环境搭建

    注:现在http://rubyforge.org 网站已经停止运行,取而代之的是https://rubygems.org这个网站,下文中所需要的gem包都可以去这个网站搜索下载.其他完全按照下文说的去 ...

  2. Ruby on Rails 實戰聖經阅读(三)

    由于是1.8.x:圣经的1.9.3差太多,所以另外按1.8.X来创建hello world 第一個Hello World!! 1. 创建项目rails -d mysql first 2.创建控制器  ...

  3. 《Ruby on Rails教程》学习笔记

    本文是我在阅读 Ruby on Rails 教程的简体中文版时所做的摘录,以及学习时寻找的补充知识.补充知识主要来自于 Ruby on Rails 實戰聖經. Asset Pipeline 在最新版 ...

  4. Linux超快速安装Ruby on Rails

    Linux超快速安装Ruby on Rails 时间 2014-11-25 11:45:11 Flincllck Talk 原文  http://www.flincllck.com/quick-ins ...

  5. 管理不同版本ruby和rails的利器——rvm

    近年来,ruby on rails逐渐火了起来,我想各位码农早就耳闻,特别是那些做B/S项目的童鞋,早就想跃跃一试了. 笔者也是初次接触ruby on rails ,我想,对于初学者来说,最好的学习方 ...

  6. ruby on rails on windows

    这次想系统学会rails,最终目标是将redmine改造成顺手的工具,主要的手段就是开发redmine插件.虽然网上都推荐使用类Unix系统,可手头只有win7系统,就安装了. 难免会遇到这样那样的问 ...

  7. win8平台下Ruby on Rails的第一个web应用

    最近在做一个网站web前端的前期开发,老板要求用Ruby on Rails搭建部署开发环境,上网搜之,发现整个搭建流程比较坑爹,于是用了一款集成软件Bitnami Ruby Stack一键安装到我的w ...

  8. 为什么学习Ruby On Rails:

    简单总结了一下自己为什么喜欢ruby on rails: 语法简单,写代码很愉快,比较接近伪代码: 喜欢其强大的正则表达式和字符串操作. ruby中面向对象更自由,更动态: ruby给人信任,相信你了 ...

  9. 通过Ruby On Rails 框架来更好的理解MVC框架

    通过Ruby On Rails 框架来更好的理解MVC框架   1.背景    因为我在学习软件工程课程的时候,对于 MVC 框架理解不太深入,只是在理论层面上掌握,但是不知道如何在开发中使用 MVC ...

随机推荐

  1. Java对对象的引用 不是 引用调用 而是按值引用 Java不存在引用调用

    call by reference Java call by value

  2. C语言中的声明与定义的差别

    1.对于以下的声明语句 int a;        假设其位置出如今全部的函数体之外,那么它就被称为外部对象a的定义.这个语句说明了a是一个外部整型变量,同一时候为a分配了存储空间.由于外部对象a并没 ...

  3. spark集成hivecontext配置

    spark版本:spark-1.6.0-bin-hadoop2.6hive版本:hive 1.2.1 1.hive-site.xml<property>  <name>hive ...

  4. I2S

    音频数据传输而制定: Inter—IC Sound : 单线 时钟和数据一条线,时分复用: 标准的I2S总线电缆是由3根串行导线组成的:1根是时分多路复用(简称TDM)数据线:1根是字选择线:1根是时 ...

  5. [RK3288]PMU配置(RK808)【转】

    本文转载自:http://www.javashuo.com/content/p-6398007.html 硬件原理 pmic 电路原理 平台概述 RK808 PWM 介绍 驱动分析 dts 驱动流程 ...

  6. hdu-2066 一个人的旅行(最短路spfa)

    题目链接: 一个人的旅行 Time Limit: 1000/1000 MS (Java/Others)     Memory Limit: 32768/32768 K (Java/Others) Pr ...

  7. 「HNSDFZ暑期集训 测试1」「LuoguT36485」 括号(贪心

    Description 给定一个由左括号'('和右括号')'组成的字符串s,其中第i个括号的权值为ai. 我们定义一个括号序列t为合法括号序列,当且仅当满足下列条件之一: 1.t为空串 2.t=(A) ...

  8. 【HDU 4722】 Good Numbers

    [题目链接] 点击打开链接 [算法] f[i][j]表示第i位,数位和对10取模余j的数的个数 状态转移,计算答案都比较简单,笔者不再赘述 [代码] #include<bits/stdc++.h ...

  9. CreateThread创建线程 互斥量锁

    HANDLE CreateThread( LPSECURITY_ATTRIBUTES lpThreadAttributes,//SD:线程安全相关的属性,常置为NULL SIZE_T dwStackS ...

  10. 数据库MySQL技术-基础知识

    数据库技术: SQL,关系数据库标准 注意: 环境编码:  cmd客户端是固定的gbk编码  而php网页中,是该网页文件的编码(现在主流都是utf8). mysql> set names gb ...