如何愛上開發 Ruby2 on Rails4


Outline
  1. 1. 開發準備工作
    1. 1.1. 靜態網頁,需不需要架設伺服器呢?
    2. 1.2. Ruby on Rails 可以做到什麼事情?
  2. 2. Ruby 關於 Ruby
    1. 2.1. 安裝 Ruby 2.0.0-p195
    2. 2.2. ruby 可以寫什麼?
  3. 3. 為什麼需要網站開發框架? Web framework
  4. 4. MVC 架構
  5. 5. Rails 哲學說
    1. 5.1. 安裝 rails 4.0.0
  6. 6. 實作
  7. 7. 版本控制 git
    1. 7.1. 安裝
  8. 8. Deploy 部署
    1. 8.1. 安裝 heroku
      1. 8.1.1. heroku push 設定 gemfile
  9. 9. 延伸
  10. 10. 學習資源
  11. 11. Reference

因為對於很多新鮮技術感興趣的我,接觸了不少開發的語言,包括 ios(objective-C)android(java)web(ROR),雖然接觸的都不算深,但是我最後發現 web 才是最對我胃口的開發應用。

寫網頁吧,比較有成就感!
Ruby on Rails

rails lover

開發準備工作

靜態網頁,需不需要架設伺服器呢?

答案不需要。因為不需要資料庫,也不需要運算能力。

那靜態網頁可以放在哪裡?自己電腦桌面上、學校空間、dropbox、github page!
ex: 計概作業放到學校空間上。

建立自己的GitHub Project Pages

Ruby on Rails 可以做到什麼事情?

http://im102timeline.herokuapp.com/

你可以把設計網頁分為兩個部分

  1. 存取資料(新增資料那些)
  2. 網頁美觀度

而為什麼1.的部分可縮短成10分鐘呢?因為 ROR 就是要推薦你們的好東西。

  1. 開發快速
  2. 好維護

Ruby 關於 Ruby

跟 C、C++、java、PHP、Ruby、Python 一樣就是程式語言,但是是比較特別的高階的程式語言。

試著讓 Ruby 更為自然,而不是簡單。

  • scripting language。
  • 純物件導向的語言。
  • 區塊(Blocks):{}do ... end
  • 動態語言
    • 動態語言(Ruby、Python、PHP、Perl等)比起靜態語言(Java、C++等)
    • 靜態語言和動態語言的差別在於,前者的變數型別需要事前宣告,後者則是執行期才動態決定。實務上,就看程式需不需要事前編譯這個動作了。
      1. 執行效能是絕對比不上靜態語言的
      1. 沒有編譯期可以檢查型別錯誤
    • 不需要編譯

安裝 Ruby 2.0.0-p195

  1. 請先更新電腦再開始
  2. text editor: sublime 2
  3. chrome
  4. rvm
1
2
3
4
5
6
$ sudo apt-get update
$ sudo apt-get install curl
$ \curl -L https://get.rvm.io | bash -s stable
$ source /home/michaelhsu/.rvm/scripts/rvm #!!注意不同!
$ rvm list
$ rvm install 2.0.0-p195
1
$ gem list

ruby 可以寫什麼?

什麼都可以寫,像程式作業,舉例:捷運站經緯度坐標 Open data

為什麼需要網站開發框架? Web framework

程式語言與 HTML 標記語言太過於混雜,用 <?php ... ?> 括起來的部份參雜在 html file 裡面,雖然是可以進行開發,但是維護性非常低,也許自己可能也看不懂,至於所謂框架看起來就是長這樣:

  • 一層層的資料夾加上一些概念

MVC 架構

  • MVC 是一個設計概念,包括
    • Model: 操作資料庫
    • View: 表示使用者介面
    • Controller: HTTP Request,與其他部分溝通
  • 很多地方都有提倡 MVC 架構,Rails 是其中之一
  • 分離邏輯和使用者介面。
  • 其它語言開發框架?
  • language vs web frameworks -- wiki

Rails 哲學說

  • MVC
    • VIEW: html.erb<%= %>
    • Controller: 主軸核心運算
    • Model: 操作資料庫
  • DRY: Don’t Repeat Yourself
  • RESTful (最佳實踐規則) -> controller 提到
  • ORM (Object-relational mapping) -> model

安裝 rails 4.0.0

1
$ gem install rails

實作

  • rails new 建立一個 Rails Project,
1
2
3
4
$ rails new "myfirstror"
$ cd myfirstror
$ sudo apt-get install nodejs # for ubuntu error
$ rails server
  • 利用 Scaffold 來快速打造一個 CRUD 的功能。
1
2
3
$ rails generate scaffold food name:string count:integer descript:text due:datetime eatable:boolean
$ rake db:migrate
  • attributes SQL types
  • CRUD
  • Restful
  • rails gem 可以自己寫,但是記得 DRY,有人寫好就拿來用。

版本控制 git

你的程式碼應該放在哪裡呢?

  1. 你的電腦裡
  2. 你的隨身碟裡
  3. dropbox
  4. github!

安裝

1
$ sudo apt-get install git

create github account
git 教學 try git

Deploy 部署

  • RAILS_ENV: development/test/production
  • PaaS: Herku

安裝 heroku

1
2
$ wget -qO- https://toolbelt.heroku.com/install-ubuntu.sh | sh
$ heroku login

heroku push 設定 gemfile

1
2
3
4
5
6
7
8
group :development do
gem 'sqlite3'
end
group :production do
gem 'pg'
end
gem 'rails_12factor', group: :production

安裝 PostgreSQL

1
$ sudo apt-get install libpq-dev

延伸

雲端運算概念:

  1. IaaS (Infrastructure as a Service): AWS EC2
  2. PaaS(Platform as a Service): Heroku、GAE
  3. SaaS(Software as a Service): Gmail、google doc

切換資料庫:Rails on PostgreSQL

學習資源

Reference