Slide 1

Slide 1 text

Ruby on Rails 網站開發框架 @萬能科技大學 2014/04/17

Slide 2

Slide 2 text

about.me/v1nc3ntlaw 林聖哲 / Vincent / [email protected] 2010/05 開始接觸使用 Ruby on Rails (RoR)

Slide 3

Slide 3 text

為何選擇 RoR

Slide 4

Slide 4 text

Ruby on Rails 動態直譯式程式語言 Script Language 發明者:松本行弘 Yukihiro “Matz” Matsumoto 於 1995 年公開發表 自然、簡潔,讓程式設計師能夠快樂的寫程式

Slide 5

Slide 5 text

Ruby on Rails puts “Hello, world!”

Slide 6

Slide 6 text

Ruby on Rails 網站開發框架 發明者:David Heinemeier Hanson (DHH) 於 2004 年釋出開源 高生產力、快速開發

Slide 7

Slide 7 text

Ruby on Rails 高生產力 用更少的程式碼完成更多的事。 快速開發 預設好各種設定和遵循一定的規範。

Slide 8

Slide 8 text

為何選擇 RoR 快樂的寫程式又有很高的生產力 ( 快樂的賺錢 )

Slide 9

Slide 9 text

RoR 開發框架集成 建立遵循規範的專案資料夾結構 內建輔助開發網站時需要的工具 自動化需要重複操作的開發流程

Slide 10

Slide 10 text

RoR 基本目錄結構

Slide 11

Slide 11 text

應用模式遵循規範 MVC & RESTful

Slide 12

Slide 12 text

MVC Pattern Model-View-Controller

Slide 13

Slide 13 text

Model 網站使用到的物件資料和定義操作資料的邏輯, 一個 Model 會對應到一個資料庫的資料表。 class Post < ActiveRecord::Base def like post.like_count += 1 post.save end end

Slide 14

Slide 14 text

ORM - ActiveRecord 負責與資料庫 (MySQL、PostgreSQL) 溝通 SQL 語法 SELECT title FROM posts WHERE ID = 1; ActiveRecord Post.find_by_id(1).title

Slide 15

Slide 15 text

Controller 介於 Model 和 View 之間,處理瀏覽器的請求, 找出或處理 Model 物件資料,然後將資料傳到 View 顯示出來。 class PostsController < ApplicationController def show @post = Post.find(params[:id]) end end

Slide 16

Slide 16 text

View 可內嵌 Ruby 程式語法的 HTML 檔案, 輸出資料及網站頁面的呈現。 ...

<%= @post.title %>

<%= @post.content %>

...

Slide 17

Slide 17 text

應用 MVC 使專案容易維護 保持程式 DRY (Don’t Repeat Yourself) 避免重複的程式碼 不同用途的程式碼放在各自的資料夾裡 分割資料呈現和商業邏輯的程式碼

Slide 18

Slide 18 text

RESTful

Slide 19

Slide 19 text

RESTful RESTful 架構的基礎概念為 REST 理論, 其兩個主要定理為: 1. 使用 Resource 當做識別的資源,使用 URLs 來代表 Resources 2. 同一個 Resource 可以有不同的 Representations 格式變化

Slide 20

Slide 20 text

RESTful 7 Actions 行為 | http verb | 網址 列表 | GET | /posts 新增 | GET | /posts/new 建立 | POST | /posts 秀出 | GET | /posts/:id 編輯 | GET | /posts/:id/edit 更新 | PUT | /posts/:id 刪除 | DELETE | /posts/:id

Slide 21

Slide 21 text

RESTful 7 Actions 行為 | controller | view 列表 | posts#index | index.html.erb 新增 | posts#new | new.html.erb 建立 | posts#create | 秀出 | posts#show | show.html.erb 編輯 | posts#edit | edit.html.erb 更新 | posts#update | 刪除 | posts#destroy |

Slide 22

Slide 22 text

Assets Management JavaScript、CSS Style Sheets

Slide 23

Slide 23 text

使用更有生產力的轉譯語言 JavaScript => CoffeeScript CSS Style Sheets => SASS/SCSS

Slide 24

Slide 24 text

Assets Pipeline 將原本多個 .js 或 .css 檔案進行壓縮, 減少對伺服器的 HTTP Request 請求

Slide 25

Slide 25 text

內建指令工具

Slide 26

Slide 26 text

Rails Command Line rails new 建立新專案 rails generate 產生各程式碼檔案以及基本程式碼 rails server 啓動本機伺服器檢視開發中的網站 rails console 進入互動式指令介面操作網站物件

Slide 27

Slide 27 text

自動產生程式碼

Slide 28

Slide 28 text

鷹架 Scaffold rails generate scaffold \ Post title:string content:text 產生 Post Model-View-Controller 的程式檔案和 操作資料庫修改的程式碼,以及 RESTful 的 Routes 設定

Slide 29

Slide 29 text

活躍的開源社群

Slide 30

Slide 30 text

RubyGems Ruby 社群套件管理系統 Don’t Reinvent the Wheel 不要重複造輪子 全球散佈各地的優秀工程師維護的高品質程式碼

Slide 31

Slide 31 text

RubyGems devise 賦予網站使用者註冊、登入和登出的機制 carrierwave 處理檔案上傳

Slide 32

Slide 32 text

為何選擇 RoR 快速完成你的 Idea 和想法, 實踐商業邏輯在市場中可不可行。

Slide 33

Slide 33 text

線上學習資源

Slide 34

Slide 34 text

Learn Ruby The Hard Way http://lrthw.github.io/ 《 笨方法學 Ruby 》習題 0 ~ 52 由淺入深

Slide 35

Slide 35 text

Try Ruby http://tryruby.org/

Slide 36

Slide 36 text

Ruby Warrior https://www.bloc.io/ruby-warrior/

Slide 37

Slide 37 text

Ruby on Rails 實戰聖經 http://ihower.tw/rails3/index.html

Slide 38

Slide 38 text

社群活動

Slide 39

Slide 39 text

Rails Girls Taipei 給想了解技術並實現想法的女性學習 Ruby on Rails 的社群。

Slide 40

Slide 40 text

Ruby Tuesday 不定期舉辦,邀請業界強者或大大技術分享

Slide 41

Slide 41 text

Rails Tuesday 技術交流、問題請教、閒聊、Social 工作經驗

Slide 42

Slide 42 text

RubyConf Taiwan 年度 Ruby 程式語言大會,邀請國內外講者

Slide 43

Slide 43 text

Q & A