almost 4 years ago

一. 前言

  1. 什麼是 RoR?全名是 Ruby on Rails,也簡稱Rails,是一個使用Ruby語言寫的開源Web應用框架,它是嚴格按照MVC結構開發的。它努力使自身保持簡單,來使實際的應用開發時的代碼更少,使用最少的配置。Rails的設計原則包括「不做重複的事」(Don't Repeat Yourself)和「慣例優於設定」(Convention Over Configuration)。Rails框架是以固定的命名習慣來自動判斷整個架構,預設下會將網址分析成 http://網站名稱/ControllerName/ActionName/Attribute 然後執行目標Controller(控制器)中的Action(方法),並取出指定的View(視圖)回傳給瀏覽器顯示。面對資料庫則以Model(模組)的形式,藉由Active Record作為與資料庫之間的傳輸介面。本文介紹的版本是最新的 Ruby 2.2.0 和 Rails 4.2.0。WIKI介紹
  2. 為何使用 Ubuntu?因為它是免費的 Linux作業系統,提供了友善的視窗環境,還可以和 Windows 7共存,不過記得要先 切割硬碟,或是拿一台舊電腦來安裝,當然你也可以直接用 VirtualBox 跑虛擬機來玩玩,簡單說就是為了省錢 XD。為何不建議用Windows開發
  3. 如果你也住桃園,對 RoR 有興趣,歡迎加入我們的 臉書社團,我們每月一、三週六早上10~12點在中壢SOGO附近有辦讀書會 (免費),歡迎一起來參加 ^_^

二. 安裝Ubuntu

  1. 準備Ubuntu Desktop光碟,版本請用 14.04 LTS (多核心CPU可裝64bit),不建議用最新的15.x,因為很多第三方軟體會裝不起來,像是TeamViewer、VirtualBox、Docker。ISO檔下載,Ubuntu安裝參考:一般安裝VirtualBox安裝
  2. BIOS設定從光碟開機 => 安裝,語系用『繁體中文』,鍵盤排列方式用『英語(美式)』。
  3. 安裝類型選『清除磁碟並安裝Ubuntu』或『將Ubuntu與Windows 7安裝在一起』。
  4. 新增一筆使用者全名、電腦名稱、帳號、密碼。
  5. 重開機後登入帳號密碼,先搜尋 terminal 並把它拖曳到左邊啟動欄,再點一下開啟它。
  6. 修改更新套件主機 => 輸入 sudo vi /etc/apt/sources.list 把所有的 tw.archive.ubuntu.com 修改成 free.nchc.org.tw
    輸入命令
    :%s/tw.archive.ubuntu.com/free.nchc.org.tw/g
    
  7. 更新套件 sudo apt-get update && sudo apt-get upgrade
  8. 安裝常用套件 sudo apt-get install curl git-core vim nodejs tasksel sqlite3 lynx htop bwm-ng build-essential rcconf
  9. 用套裝軟體安裝程式來安裝 => 執行 sudo tasksel,勾選 OpenSSH server、LAMP server,後面會要你輸入MySQL管理者root的密碼兩次。
  10. 安裝MySQL開發工具 => 執行 sudo apt-get install libmysqlclient-dev (沒裝這個的話後面 mysql GEM 會安裝失敗)
  11. 安裝vim插件(NERDTree) => 下載並解壓縮到家目錄下 cd ; unzip eddie-vim.zip (下載點),打 vi 再按 F2就可以跳出樹狀目錄。

三. 安裝 Ruby

  1. 安裝 RVM (Ruby Version Manager) => curl -sSL https://get.rvm.io | bash -s stable
  2. 第一次安裝會出現警告,請先依照畫面指示匯入 gpg金鑰 => gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 後再執行一次。
  3. 執行 echo 'source /home/patrick/.rvm/scripts/rvm' >> ~/.bashrc
  4. 執行 exit 關閉shell,重新登入使用者帳號,系統會自動啟動 rvm
  5. 執行 rvm requirements,系統會自動安裝Ruby需要的套件,會要你輸入使用者的密碼。
  6. 檢查 RVM 版本 => rvm -v #1.26.10
  7. 查詢 Ruby 安裝了哪些版本 => rvm list known #重點是你可以安裝多個Ruby版本
    patrick@ror:~# rvm list known
    # MRI Rubies
    [ruby-]1.8.6[-p420]
    [ruby-]1.8.7[-head] # security released on head
    
    [ruby-]1.9.1[-p431]
    [ruby-]1.9.2[-p330]
    [ruby-]1.9.3[-p551]
    [ruby-]2.0.0[-p598]
    [ruby-]2.1.4
    [ruby-]2.1[.5]
    [ruby-]2.2.0
    [ruby-]2.2-head
    ruby-head
    
  8. 安裝 Ruby => rvm install 2.2.0 #前面 ruby- 可不加
  9. 檢查 Ruby 版本 => ruby -v #2.2.0
  10. 查看系統目前裝了幾套 Ruby => rvm list
    patrick@ror:~# rvm list
    rvm rubies
        ruby-1.8.7-head [ i686 ]
        ruby-1.9.1-p431 [ i686 ]
        ruby-1.9.3-p551 [ i686 ]
        ruby-2.0.0-p598 [ i686 ]
        =* ruby-2.2.0 [ i686 ]
    說明: => - current =* - current && default * - default
  11. 切換 Ruby 運行版本 => rvm use 2.2.0
  12. 查看 Ruby 安裝路徑 => which ruby #建議用一般使用者安裝,路徑會指到 /home/patrick/.rvm/rubies/ruby-2.2.0/bin/ruby
  13. 查看 Ruby 詳細資訊 => rvm info

四. 安裝 Rails

  1. 建立一個新的 Gemset (Gem集合) => rvm gemset create rails420 #目的是讓不同的 Ruby 版本裡面裝的 Gem 套件不會互相干擾
  2. 使用此 Gemset => rvm use 2.2.0@rails420 --default #加了 --default 每次開機都指定用這個 Ruby 版本
  3. 查看 Gem 詳細資訊 => gem environment
  4. 更新 Gem (Rails套件的管理程式) => gem update --system
  5. 查詢 Rails 最新的版本 => gem search ^rails$ -d #查所有Rails版本 點此
  6. 節省時間不安裝 RDoc 文件 => echo 'gem: --no-rdoc --no-ri' > ~/.gemrc
  7. 安裝 Rails => gem install rails -v 4.2.0 #版本號 -v 4.2.0 可不加,會自動安裝最新版
  8. 檢查 Rails 版本 => rails -v #4.2.0
  9. 檢查目前安裝了幾個 Rails 版本 => gem list | grep rails
    rails (4.2.0)
    
  10. 建立目錄 => mkdir projects ; cd projects
  11. 建立新專案 => rails new blog #在new前加 _4.2.0_ 可指定Rails版本
  12. 執行 cd blog # 進入該專案目錄
  13. 更新 Gem 套件 => bundle install #註:bundle 是 Ruby 追蹤和安裝 Gem 的工具程式,每次修改到 Gemfile 都要跑一次,也可以只輸入bundle
  14. 列出安裝了哪些Gem => gem list #若要查詢有哪些 Gem 可安裝,可以到 https://www.ruby-toolbox.comhttp://bestgems.org
  15. 啟動WEBrick 網站 => rails server #或縮寫 rails s
  16. 測試 => 打開瀏覽器連到 http://localhost:3000
  17. 關閉 WEBrick 網頁伺服器 => Ctrl + C
  18. 如果要查詢已安裝 Gem 的相關文件,可以執行 gem server,再打開瀏覽器連到 http://localhost:8808

五. 用 Scaffold (腳手架) 快速建立專案1(SQLite資料庫)

  1. cd ~/project
  2. 執行 rails new project1 #後面沒指定資料庫,就使用預設的SQLite3資料庫
  3. 切換到該專案目錄下 cd project1
  4. 執行 bundle #更新Gem套件
  5. 執行 rails generate (或縮寫 rails g) scaffold Books name:string description:text

    會自動建立
    控制器 /app/controllers/books_controller.rb、
    模型 /app/models/book.rb、
    視圖 /app/views/books/index.html.erb、edit.html.erb、show.html.erb、new.html.erb
    輔助方法 /app/helpers/books_helper.rb 和 _form.html.erb
    資源 /app/assets/javascripts/books.coffee
    資源 /app/assets/stylesheets/books.scss
    路由 /config/routes.rb ← 加入 resources :books (包含7個方法)

  6. 新增資料庫 rake db:migrate #註:Rake = Ruby Make,算是Ruby的工具程式,常用的是檢查路由和資料庫維護,另外使用Sqlite3 資料庫不須執行 rake db:create 指令。

  7. 測試 => 執行 rails s,打開瀏覽器連到 http://localhost:3000/books ,可以試著輸入幾筆資料 (點『New Book』超連結)

  8. 執行 sqlite3 db/development.sqlite3 可以查看 SQLite3 資料庫結構。

    SQLite指令
    .tables  #列出所有資料表
    .schema books  #顯示 books 資料表的架構
    select * from books;  #列出所有 books 資料表的資料 (只有SQL語法後面要加分號 ";" )
    .q  #離開 SQLite (或 .exit)
    

六. 標準程序建立專案2(MySQL資料庫)

  1. cd ~/project
  2. 執行 rails new project2 -d mysql #指定使用MySQL資料庫
  3. 切換到該專案目錄下 cd project2
  4. 執行 bundle #更新Gem套件
  5. 執行 rails g controller Students index show new create edit update destroy #建立學生控制器 (複數),後面可接多個方法 (也可空白,後面再手動新增方法 vi app/controllers/students_controller.rb)
  6. 執行 rails g model Student name:string age:integer #建立學生模型 (單數),後面接資料欄位和屬性
  7. 修改 config/database.yml 加入MySQL管理者(root) 的密碼123456 #註:vi 按 F2 鍵可以開啟/關閉目錄視窗
  8. 執行 rake db:create #建立MySQL資料庫 (註:每個專案會有三個資料庫,分別給開發、測試和正式環境使用,開發環境只會建立 project2_development 和 project2_test,除非前面加上 RAILS_ENV=production 才會建立 project2_production)
  9. 執行 rake db:migrate #建立MySQL資料表 (students)
  10. 執行 mysql -u root -p123456 可以查看 MySQL 資料庫結構。
    MySQL指令
    show databases;  #列出所有資料庫
    use project2_development;  #使用 project2_development 資料庫 
    show tables;  #列出 project2_development 資料庫裡面有哪些資料表
    desc students;  #顯示 students 資料表的架構
    exit;  #離開MySQL
    
  11. 修改視圖 vi app/views/students/index.html.erb ,最底下一行插入 『現在時間:<%= Time.now %> 』
  12. 新增預設路由
    vi config/routes.rb
    get 'students/index'
    加入
    root 'students#index'
    
  13. 檢查路由 rake routes
  14. 測試 => 執行 rails s,打開瀏覽器連到 http://localhost:3000

七. 用 Scaffold (腳手架) 快速建立專案3(PostgreSQL資料庫)

  1. 安裝 PostgreSQL sudo apt-get install postgresql postgresql-contrib libpq-dev
  2. 新增使用者 sudo -u postgres createuser -s patrick
  3. 進入控制台 sudo -u postgres psql
  4. 設置密碼 \password patrick
  5. 離開控制台 \q
  6. cd ~/project
  7. 執行 rails new project3 -d postgresql #指定使用PostgreSQL資料庫
  8. 切換到該專案目錄下 cd project3
  9. 執行 bundle #更新Gem套件
  10. 執行 rails g scaffold Blog title:string description:text #快速建立部落格,後面接資料欄位和屬性
  11. 修改 config/database.yml 加入 username、password、host
  12. 執行 rake db:create #建立MySQL資料庫 (註:每個專案會有三個資料庫,分別給開發、測試和正式環境使用,開發環境只會建立 project3_development 和 project3_test,除非前面加上 RAILS_ENV=production 才會建立 project3_production)
  13. 執行 rake db:migrate #建立PostgreSQL資料表 (blogs)
  14. 執行 sudo -u postgres sql 進入 PostgreSQL 主控台。
    PostgreSQL指令
    \list  #列出所有資料庫
    \c project3_development  #使用 project3_development 資料庫 
    \dt #列出 project3_development 資料庫裡面有哪些資料表
    \d+ blogs #列出 blogs 資料表的架構(schema)
    select * from blogs;  #顯示 blogs 資料表的內容
    \q  #離開 PostgreSQL
    

八. MVC架構

轉貼自 Rails 101S 電子書

九. RESTful介紹 (轉貼自 Rails 101S)

轉貼自 Rails 101S 電子書

十. 備註

  1. 移除某個 Ruby 版本 => 執行 rvm remove 2.2.0 #查詢 Ruby 版本號可以輸入 rvm list
  2. 移除 RVM (請小心使用,會把所有的 Ruby、Rails 全部移除) => 執行 rvm implode 再輸入 yes
    patrick@linux:/$ rvm implode
    Are you SURE you wish for rvm to implode?
    This will recursively remove /home/patrick/.rvm and other rvm traces?
    (anything other than 'yes' will cancel) > yes
    Removing rvm-shipped binaries (rvm-prompt, rvm, rvm-sudo rvm-shell and rvm-auto-ruby)
    Removing rvm wrappers in /home/patrick/.rvm/bin
    Hai! Removing /home/patrick/.rvm
    /home/patrick/.rvm has been removed.
    Note you may need to manually remove /etc/rvmrc and ~/.rvmrc if they exist still.
    Please check all .bashrc .bash_profile .profile and .zshrc for RVM source lines and delete or comment out if this was a Per-User installation.
    Also make sure to remove </span>rvm<span class="sb"> group if this was a system installation.
    Finally it might help to relogin / restart if you want to have fresh environment (like for installing RVM again).
    
  3. 清空 Gemset => rvm gemset empty 2.2.0@rails420 #查詢Gemset集合可以輸入 rvm gemset list
  4. 移除 Gemset => rvm gemset delete 2.2.0@rails420 #清空可以重新安裝Gem,和移除不同
  5. 如果要固定使用某個版本,可以在該專案目錄下執行 echo 'rvm use 2.2.0@rails420' >> .rvmrc
  6. [網站] 改用 RBENV 安裝 RoR

十一. RoR入門建議參考資料

  1. [網站] 笨方法學 Ruby
  2. [簡體書] Ruby基礎教程第四版(http://www.books.com.tw/products/CN11156746)
  3. [網站] Ruby 中文官方網站
  4. [網站] Ruby on Rails聖經 - Mac/Windows 環境安裝
  5. [繁體書] Ruby on Rails自習手冊:邁向鐵道工人之路
  6. [視頻] 與MySQL的零距離接觸
  7. [電子書] Rails 101S
  8. [電子書] Rails 102
  9. [網站] RailsGirls
  10. [網站] Ruby on Rails 中文指南
  11. [網站] Vim教學
  12. [視頻] Rails 10日談
  13. [網站] 跟Eddie Kao學Vim
  14. [網站] RVM實用指南
  15. [電子書] Linux Guide for Beginner
 
comments powered by Disqus