1. Trang chủ
  2. » Luận Văn - Báo Cáo

Báo cáo: Ruby On Rails (Nâng cao)

26 1K 3

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 26
Dung lượng 415 KB

Nội dung

Ruby on Rails (RoR) là một web framework được viết bằng ngôn ngữ Ruby và tất cả các ứng dụng trong Rails sẽ được viết bằng Ruby. Ruby on Rails được tạo ra để hỗ trợ các lập trình viên việc phát triển các phần mềm nền web một cách nhanh nhất có thể. Rails framework tận dụng các đặc điểm của ngôn ngữ Ruby. Yukishiro Matzumoto viết ra ngôn ngữ này vào năm 1995, nó khá giống với các ngôn ngữ thông dịch khác như Perl, Eiffel, Python…. Ruby là ngôn ngữ script, định nghĩa kiểu động và là một ngôn ngữ hướng đối tượng, nó được thiết kế với một cú pháp trong sáng, tạo cảm giác dễ đọc, và viết code ngắn gọn nhất có thể đối người dùng, ví dụ như nó không cần dấu chấm phẩy khi kết thúc câu lệnh, không cần các dấu ngoặc đơn khi khai báo các phương thức, có những đoạn code thậm chí được viết giống như việc chúng ta viết tiếng anh vậy. Nó được thiết kế để lập trình ứng dụng web dễ dàng hơn bằng cách tạo ra các giả định về những thứ mà nhà phát triển muốn bắt đầu. Rails là một phần mềm kiểu độc đoán, tức là nó giả định rằng đây là cách tốt nhất để làm việc, và nó được thiết kế để khuyến khích cách làm đó – và trong một số trường hợp nó ngăn cản những lựa chọn thay thế.

Trang 1

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ - ĐHQGHN

CÁC VẤN ĐỀ HIỆN ĐẠI CỦA CÔNG NGHỆ PHẦN MỀM

RUBY ON RAILS

NGUYỄN NHẬT TÂN, NGUYỄN VĂN CƯỜNG, TRẦN MINH THẮNG26/11/2013

Trang 2

Mục lục

1 Giới thiệu Ruby on Rails 4

1.1 Tại sao gọi là Ruby on Rails? 4

1.2 Một số Website dùng Ruby on Rails 4

1.3 Cài đặt Ruby on Rails 5

1.4 Công cụ phát triển 6

2 Đặc trưng của Ruby on Rails 6

2.1 Các đặc trưng cơ bản 6

2.2 Cấu trúc thư mục ứng dụng 7

2.3 Model – View – Controller 8

2.4 Model 8

2.5 View 8

2.6 Controller 9

3 Định tuyến trong Ruby on Rails 9

3.1 Giới thiệu 9

3.2 Path và URL Helper 10

3.3 Các tài nguyên lồng nhau 10

3.4 Tạo Path và URL từ Object 11

4 Active Record là gì? 12

5 Object Relational Mapping (ORM) 13

6 Active Record như là một ORM Framework 14

7 Quy ước về cấu hình trong Active Record 14

7.1 Quy ước đặt tên 14

7.2 Quy ước về lược đồ (schema) 15

Trang 3

8 Thao tác với Model 15

9 Console Rails 16

10 Cơ sở dữ liệu trong Rails 17

11 Quản lý Relation với Active Record 19

12 CRUD – đọc và ghi dữ liệu 21

12.1 Create 21

12.2 Read 21

12.3 Update 22

12.4 Delete 22

13 Active Record Migrations 22

14 Giới thiệu về Scaffolding 24

15 Đánh giá 24

16 Demo ứng dụng 26

16.1 Blog 26

16.2 Cửa hàng sách trực tuyến 26

Trang 4

1 Giới thiệu Ruby on Rails

1.1 Tại sao gọi là Ruby on Rails?

Ruby on Rails (RoR) là một web framework được viết bằng ngôn ngữ Ruby và tất

cả các ứng dụng trong Rails sẽ được viết bằng Ruby Ruby on Rails được tạo ra để

hỗ trợ các lập trình viên việc phát triển các phần mềm nền web một cách nhanh nhất có thể

Rails framework tận dụng các đặc điểm của ngôn ngữ Ruby Yukishiro Matzumoto viết ra ngôn ngữ này vào năm 1995, nó khá giống với các ngôn ngữ thông dịch khác như Perl, Eiffel, Python… Ruby là ngôn ngữ script, định nghĩa kiểu động và

là một ngôn ngữ hướng đối tượng, nó được thiết kế với một cú pháp trong sáng, tạo cảm giác dễ đọc, và viết code ngắn gọn nhất có thể đối người dùng, ví dụ như nó không cần dấu chấm phẩy khi kết thúc câu lệnh, không cần các dấu ngoặc đơn khi khai báo các phương thức, có những đoạn code thậm chí được viết giống như việc chúng ta viết tiếng anh vậy

Nó được thiết kế để lập trình ứng dụng web dễ dàng hơn bằng cách tạo ra các giả định về những thứ mà nhà phát triển muốn bắt đầu Rails là một phần mềm kiểu độc đoán, tức là nó giả định rằng đây là cách tốt nhất để làm việc, và nó được thiết

kế để khuyến khích cách làm đó – và trong một số trường hợp nó ngăn cản những lựa chọn thay thế

1.2 Một số Website dùng Ruby on Rails

Github.com: Hệ thống quản lý source phân tán, được nhiều công ty lớn sử dụng,

và có hàng triệu người đang sử dụng trang web này như một nơi lưu trữ các dự án của họ

Basecamp.com: website quản lý dự án online, ra đời vào năm 2004, cho đến năm

2012 đã có hơn 8 triệu dự án được quản lý trên website này

Twitter.com: là trang mạng xã hội lớn thứ 2 sau facebook, rất được sử dụng phổ

biến tại Mĩ và các nước châu Âu

Scibd.com: đây là trang web chia sẻ tài liệu trực tuyến lớn và nổi tiếng, có rất

nhiều tài liệu hay và miễn phí được chia sẻ tại đây

Trang 5

Và một số website khác cũng nổi tiếng như hulu.com, hay slideshare.com, và

nhiều trang web khác

1.3 Cài đặt Ruby on Rails

Bình thường để cài đặt Ruby on Rails bản phải cài đặt tất cả các phần sau:

Giải pháp đơn giản và nhanh chóng dành cho bạn là dùng gói cài đặt có đầy đủ tất

cả các thành phần cần thiết, chỉ việc cài đặt nó và bắt đầu xây dựng một ứng dụng ROR: railsintaller.org, nó đã bao gồm những phần sau:

Trang 6

1.4 Công cụ phát triển

Sublime Text: là một editor có giao diện rất thân thiện cũng như thông minh, hỗ

trợ lập trình rất nhiều ngôn ngữ trong đó có Ruby (recommended)

JetBrains RubyMine: là một IDE đầy đủ tuy nhiên hơi nặng và cồng kềnh, hơn

một nửa cộng đồng Rails sử dụng nó, có bản FREE cho mục đích giáo dục hoặc các dự án mã nguồn mở

NetBeans: là một IDE quá nổi tiếng, hỗ trợ hầu như tất cả các ngôn ngữ cho các

dự án khác nhau, bạn chỉ cần cài plug-in cho Ruby on Rails để có thể bắt đầu phát triển ứng dụng

Aptana Studio: là một IDE đầy đủ các công cụ để phát triển Ruby on Rails, bạn

có thể cài đặt phiên bản standalone hoặc plug-in cho Eclipse

Ngoài ra còn rất nhiều editor và IDE khác cho các môi trường khác nhau như Linux, Windows, Mac

2 Đặc trưng của Ruby on Rails

2.1 Các đặc trưng cơ bản

DRY – “Don’t Repeat Yourself” – không khuyến khích viết đi viết lại mã

COC - Convention Over Configuration – Rails tạo những giả định về những gì bạn muốn làm và bạn sẽ làm, thay vì bạn phải chỉ định tất cả mọi thứ qua những file cấu hình

Tạo ra các giả định về những thứ mà nhà phát triển muốn bắt đầu, độc đoán, giả định đó là cách tốt nhất để làm việc

Ví dụ:

Rails đã định nghĩa sẵn thư mục mà bạn sẽ đặt stylesheets, images (/public), cũng như các file JavaScript (/script) để nó có thể biên dịch chúng thành các file cached Đây là một tính năng tuyệt vời nếu bạn có nhiều tài nguyên JavaScript để quản lý, nhưng hơi thừa nếu bạn làm việc với các ứng dụng nhỏ

Trang 7

Khi bạn tạo một ứng dụng Rails mới, nó tự động tạo khoảng 10 thư mục cấp cao với một số thư mục con, và tất cả các file rb cũng được tạo sẵn Nó cũng giả sử

rằng bạn cần một database Điều đó chính là Convention Nó có vẻ hơi phức tạp

nếu bạn chỉ xây dựng những site nhỏ nhưng đối với các site lớn thì sẽ rất tiện lợi

2.2 Cấu trúc thư mục ứng dụng

app/ Chứa các controllers, models, views, helpers, mailers và assets của ứng dụng.

script/ Chứa rails script để khởi động ứng dụng, và các script khác để triển khai hoặc chạy ứng dụng.config/ Cấu hình runtime rules, routes, database

config.ru Cấu hình rack cho server được dùng để khởi động ứng dụng.db/ Chứa các database chema, migration hiện tại

public/ Chứa các file tĩnh và các asset được biên dịch

Rakefile Xác định vị trí và nạp các nhiệm vụ có thể chạy từ cmd

Trang 8

File/Folder Purpose

Nên thêm các task vào thư mục lib/tasks thay vì thay đổi Rakefile

RECOMMENTME.rdoc File giới thiệu ứng dụng của bạn, cách cài đặt

tmp/ Các file tạm thời (cache, pid, session)

vendor/ Mã nguồn của bên thứ 3

2.3 Model – View – Controller

RoR sử dụng các mẫu kiến trúc Model – View – Controller(MVC) để tăng cường khả năng bảo trì và phát triển của ứng dụng MVC cho phép chúng ta chia ứng dụng thành các tầng sử lý logic, nghiệp vụ và giao diện người dùng một cách rõ ràng, điều này cũng gúp cho việc kiểm thử và tái sử dụng code được dễ ràng hơn

2.4 Model

Tầng Model xử lý các nghiệp vụ của ứng dụng và trực tiếp thao tác với dữ liệu Trong RoR, tầng model thường được sử dụng để tương tác với các thành phần tương ứng với chúng trong cơ sở dữ liệu và validate dữ liệu

2.5 View

Tầng view hiển thị giao diện người dùng, trong RoR các view là các file HTML được nhúng cùng với các đoạn mã Ruby Các đoạn mã Ruby được nhúng trong HTML file là khá đơn giản, thường chỉ gồm các vòng lặp và các lệnh điều kiện rẽ nhánh, nó được sử dụng để hiện thị dữ liệu lên form của view

Trang 9

2.6 Controller

Controller tương tác với model và view Các request đến từ trình duyệt sẽ được xử

lý bởi controller, sau đó controller có thể sẽ tương tác với model để lấy dữ liệu sau

đó trả về cho view để hiển thị thông tin

3 Định tuyến trong Ruby on Rails

3.1 Giới thiệu

Được định nghĩa trong file routes.rb

Một định tuyến cung cấp ánh xạ giữa các HTTP verbs (GET, POST, PATCH/PUT, DELETE) và các URL đến các hành động (trong controller)

Theo quy ước mỗi hành động cũng ánh xạ đến từng CRUD (CREATE, READ, UPDATE, DELETE) trong database

Ví dụ:

resources :posts trong routes.rb tạo ra 7 tuyến đường khác nhau trong ứng dụng,

tất cả đều ánh xạ tới Posts Controller

Nếu Rails không tìm thấy posts/new template, nó sẽ gọi một template có tên là

application/new (Vì PostsController kế thừa từ ApplicationController)

HTTP Verb Path Action Used for

GET /posts index hiển thị danh sách post

GET /posts/new New/ trả về HTML form để tạo post mớiPOST /posts create Tạo một post mới

GET /posts/:id show Hiện thị một post

GET /posts/:id/edit edit Trả về HTML form để edit post

PATCH/PUT /posts/:id update Update một post

DELETE /posts/:id destroy Xóa một post

Trang 10

3.2 Path và URL Helper

Để tạo ra một route cần dùng đến một số helper

Đối với resource :posts

posts_path trả về /posts

new_post trả về /posts/new

edit_post_path(:id) trả về /posts/:id/edit

post_path(:id) trả về /posts/:id

Mỗi helper có một _url helper tương ứng (ví dụ post_url) trả về đường dẫn hiện tại

3.3 Các tài nguyên lồng nhau

Thường có những tài nguyên là con của tài nguyên khác Ví dụ, ứng dụng của bạn

Trang 11

Ngoài định tuyến cho posts, khai báo trên cũng định tuyến comments đến

CommentsController

Các URL của comment gửi yêu cầu đến post:

GET /posts/:post_id/comments index Hiển thị tất cả comment của một post

GET /posts/:post_id/comments/new new

trả về một form HTML

để tạo comment của một post nhất địnhPOST /posts/:post_id/comments create tạo một comment thuộc một post nhất định

GET /posts/:post_id/comments/:id show

hiển thị một comment thuộc một post nhất định

GET /posts/:post_id/comments/:id/edit edit

trả về một form HTML

để edit một comment thuộc một post nhất định

PATCH/PU

T /posts/:post_id/comments/:id update

update một comment nhất định thuộc một post nhất định

DELETE /posts/:post_id/comments/:id destroy

xóa một comment nhất định thuộc một post nhất định

3.4 Tạo Path và URL từ Object

Rails có thể tạo đường dẫn và URL từ một mảng các tham số Ví dụ, bạn có route sau:

Trang 12

resources :posts do

resources :comments

end

Khi sử dụng post_comment_path, bạn có thể truyền vào một instance của Post và

Comment thay vì ID:

<%= link_to ‘Comment details’, post_comment_path(@post, @comment) %>

Bạn cũng có thể sử dụng url_for với một bộ object, và Rails sẽ tự động xác định

bạn muốn route nào:

<%= link_to ‘Comment details’ , url_for([@post, @comment]) %>

Trong trường hợp này Rails sẽ xem @post là một Post và @comment là một

Comment, vì thế nó sẽ sử dụng post_comment_path helper.

Đối với những hành động khác, chỉ cần thêm action làm phần tử đầu tiên của

Active Record trong mô hình MVC: là tầng Model của hệ thống, chịu trách nhiệm đại diện cho business data và logic Nó thuận tiện cho việc tạo và sử dụng các business object được lưu trữ trong DB Là 1 sự bổ sung cho Active Record Pattern

Trong Active Record , các đối tượng mang cả dữ liệu và hành vi hoạt động trên

dữ liệu đó, đảm bảo việc truy cập dữ liệu 1 cách logic, là một phần của đối tượng sẽ dạy cho người dùng làm thế nào để đọc và ghi dữ liệu trong DB Vì thế, Active Record được xem như là một công cụ mạnh mẽ và hữu dụng Thông

Trang 13

Key khi xây dựng DB, việc liên kết các bảng cũng có Active Record trợ giúp Khi có sự thay đổi, ta không cần phải thao tác với SQL mà chỉ cần thông qua ngôn ngữ Ruby.

5 Object Relational Mapping (ORM)

ORM là cơ chế cho phép bạn xây dựng 1 ứng dụng (cụ thể là OOP-hướng đối tượng) mà thao tác trên table trong database được đóng gói lại trong 1 business class (vd: table Users tương ứng với class User), và không phải quan tâm nhiều đến việc viết query cho mỗi lần truy xuất DB Kỹ thuật ORM thích hợp trong môi trường phát triển một hệ thống website mà trong đó cần tham gia nhiều thành viên trong nhóm code và cho các hệ thống quy mô Enterprise

Với ORM, bạn có thể sử dụng với nhiều hệ quản trị cơ sở dữ liệu khác nhau,

nó độc lập hoàn toàn, và thường các ORM trên thị trường hiện nay đều hỗ trợ nhiều hệ quản trị cơ sở dữ liệu khác nhau, bạn chỉ cần thay đổi driver tương tác

là có thể làm việc một cách nhanh chóng mà không cần phải thay đổi bất kỳ dòng code nào

Một thế mạnh nữa của ORM, là bạn có thể thao tác truy cập, xử lý database một cách dễ dàng và nhanh chóng So với cách thông thường bạn phải sử dụng các câu lệnh SQL để truy vấn và xử lý dữ liệu Nhưng với ORM, bạn không

Trang 14

cần phải sử dụng SQL, mà chỉ cần thao tách, sử dụng các API đơn giản và dễ dùng của nó để truy vấn và dữ lý dữ liệu

Với ORM Framework, bạn không cần dùng SQL để thao tác dữ liệu, vậy thì làm sao để nó làm việc với database? Đó là do nó tự động gen ra các câu lệnh SQL như Insert, Update, Delete, Select dữ liệu bên dưới database, nên bạn sẽ khó hoặc có thể không can thiệp vào để tối ưu nó hơn Tuy nhiên các ORM Framework đều hỗ trợ bạn gọi câu lệnh SQL trực tiếp trong những tình huống cần thiết

Ngoài ra bạn còn phải gặp nhiều tình huống nan giải mà bất kì ai làm việc với ORM cũng phải gặp qua: cách thức quản lý session truy xuất của ORM – nếu bạn làm việc với Web project, lazy loading, tình huống load toàn bộ database lên nếu không thiết kế đúng cách… Và khi đó hệ thống của bạn sẽ làm việc một cách ì ạch

6 Active Record như là một ORM Framework

Active Record cung cấp cho chúng ta các cơ chế, quan trọng là khả năng:

• Đại diện cho model và dữ liệu của chúng

• Đại diện cho sự liên kết giữa các model

• Đại diện cho các phân cấp kế thừa thông qua mô hình quan hệ

• Kiểm tra tính hợp lệ của của model trước khi chúng tồn tại trong DB

• Thực hiện các hoạt động cơ sở dữ liệu một cách hướng đối tượng

7 Quy ước về cấu hình trong Active Record

7.1 Quy ước đặt tên

Active Record sử dụng quy ước đặt tên để tìm hiểu cách thức ánh xạ giữa các models và các bảng DB:

- Tên bảng là dạng số nhiều của tên model

- Nếu tên model bao gồm nhiều từ (viết hoa ký tự đầu tiên của mỗi từ) thì tên bảng tương ứng sẽ chứa các từ được cách nhau bởi dấu gạch dưới

Ví dụ:

Trang 15

Model / Class Table / Schema

7.2 Quy ước về lược đồ (schema)

Active Record sử dụng quy ước đặt tên các cột trong bảng cơ sở dữ liệu tùy thuộc vào mục đích của những cột này

Foreign Key: cột này được đặt tên theo mô hình Active Record sử dụng cột

này để tạo ra các liên kết giữa các bảng trong DB

Primary Key: mặc định Active Record sẽ sử dụng một cột số nguyên tên là

ID là khóa chính của bảng Khi sử dụng Active Record Migration để tạo ra các bảng, cột này sẽ được tự động tạo ra

Ngoài ra còn một số tên cột tùy chọn sẽ thêm các tính năng của Active Record:

Create_at: tự động thiết lập ngày và thời gian hiện tại khi một bản ghi được

ghi lần đầu tiên

Update_at: tự động thiết lập ngày và thời gian hiện tại khi một bản ghi được

cập nhật

8 Thao tác với Model

Chúng ta sẽ cần sử dụng đến Object của model Active Record Để tạo ra một model, ta sử dụng dòng lệnh trong cmd:

rails generate model Product

Rails sẽ tự động tạo ra cho ta một Object của model trong

app/models/product.rb.

Lúc này, nếu sử dụng chức năng tích hợp sẵn của Schema Migration thì ta sẽ không cần sử dụng scrip SQL mà sẽ làm việc độc lập giữa DB và Schema, làm

Trang 16

giảm thiểu thao tác với DB mà không làm mất dữ liệu sau mỗi lần thay đổi Schema.

Để sử dụng Schema Migration, ta thay đổi nội dung tập tin

Để thực thi gõ câu lệnh: rake db:migrate

Active Record sẽ khởi tạo 2 table: schema_info và products Trong table

schema_info sẽ ghi lại verson của tập tin migration giúp quản lý các mã đã tạo

đồng thời vẫn giữ được thông tin đã lưu

9 Console Rails

Là một tiện ích đi kèm với mỗi ứng dụng Rails, cho phép làm việc với các model được liên kết với DB Khi khởi động console, Rails sẽ thực hiện các bước:

• Rails liên kết với DB

• Rails tải các class Active Record trong app/model

• Rails cho phép thao tác với model

Để khởi động Rails console, sử dụng lệnh: rails console

Thêm thông tin vào CSDL:

Ngày đăng: 10/09/2015, 10:53

TỪ KHÓA LIÊN QUAN

w