原帖: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. 在C语言中使用libb64进行Base64编解码

    libb64下载地址http://sourceforge.net/projects/libb64 以下为Demo libb64_demo.c #include <stdio.h> #inc ...

  2. mysql 查询表死锁 和结束死锁的表步骤以及锁表等级

    1.查询是否锁表show OPEN TABLES where In_use > 0; 2.查询进程 show processlist  查询到相对应的进程===然后 kill    id 补充: ...

  3. c语言基本函数

    1. 用宏定义写出swap(x,y) #define swap(x, y) x = x + y; y = x - y; x = x - y; 2.数组a[N],存放了1至N-1个数,其中某个数重复一次 ...

  4. 总结 <stdlib.h>头文件 在算法中可能会用到的一些函数

    头文件<stdlib.>具有一定的总结性. 它定义了类型.宏和各种函数,这些函数用于:内存管理.排序和查找.整形运算.字符串到数字的转换.伪随机数序列.与环境的接口.把多字节字符串和字符转 ...

  5. YTU 2453: 我想有套北京的房

    2453: 我想有套北京的房 时间限制: 1 Sec  内存限制: 128 MB 提交: 796  解决: 289 题目描述 小原是一个软件工程师,名叫原黛玛,他在北京工作.现在有一套房子,价格200 ...

  6. Unbuntu 终端中使用Tab键不能自动补全

    解决方案 1.利用vi编辑器打开 /etc/bash.bashrc文件(需要root权限) sudo vi /etc/bash.bashrc 2.找到文件中的下列代码 #enable bash com ...

  7. DPI和PPI

    写在前面 各种手机测频机构或者相关资讯老是谈及一个概念:ppi和dpi,通常总会忽略,只是稍微明白,这参数越高,说明屏幕分辨率越高:很长时间都止步如此:但作为一个iOS开发者,岂能止步如此,万一别人问 ...

  8. [NOIP 2018 Day1] 简要题解

    [题目链接] 铺设道路 : https://www.luogu.org/problemnew/show/P5019 货币系统 : https://www.luogu.org/problemnew/sh ...

  9. UI:地图和定位

    参考学习链接 各种IOS设备可以使用 Core Location 框架确定它的物理位置.core location 主要使用三种技术来实现功能.GPS.蜂窝基站三角网络定位. wifi 定位服务.这三 ...

  10. k8s-部署dashboard1.10.1-十七

    一.获取镜像和填坑 我的k8s是1.13.1,这里dashboard用的1.10.1: 由于国内不能访问Google,而且大部分人可能也没有其他途径访问:只能在阿里云或者其他镜像网站上获取了: 镜像获 ...