Mục tiêu của đề tài Trau dồi kiến thức cho môn học, có kinh nghiệm để tiếp cận với các dự án thực tếliên quan đến ngôn ngữ này. Tăng kỹ năng lập trình.Giới hạn và phạm vi của đề tài N
Trang 1TRƯỜNG ĐẠI HỌC NHA TRANG KHOA CÔNG NGHỆ THÔNG TIN
Môn học: Thực tập cơ sở
ĐỀ TÀI
SỬ DỤNG RUBY ON RAILS ĐỂ XÂY DỰNG 1 BLOG CÁ NHÂN
Giảng viên hướng dẫn: Nguyễn Hải Triều
Họ và tên sinh viên: Phan Minh Đạt MSSV: 63133669
Trang 2CHƯƠNG 1 TỔNG QUAN VỀ ĐỀ TÀI
1.1 Lý do chọn đề tài 1
1.1 Mục tiêu của đề tài 1
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
2.1 Giới thiệu về Ruby on Rails 2
2.2 Tổng quan về SQLite 3
2.2.1 Hệ quản trị CSDL SQLite
2.2.2 Đặc điểm của SQLite
2.3 Lý do chọn Ruby on Rails? 3
CHƯƠNG 3 NỘI DUNG THỰC HIỆN
3.1 Đối tượng sử dụng website: 4
3.2 Phân tích thiết kế hệ thống 4
3.2.1 Các yêu cầu chức năng chính của hệ thống
3.2.2 Biểu đồ Use Case
3.3 Thiết kế cơ sở dữ liệu 4
3.4 Cài đặt Ruby on Rails 5
3.4.1 Cài đặt ruby
3.1.2 Cài đặt SQLite3
3.1.3 Cài Node.js
3.1.4 Cài yarn
3.5 Tạo project với rails 5
3.6 Đặc tả giao diện 7
3.6.1 Giao diện trang chủ
3.6.2 Giao diện đọc blog
3.6.3 Giao diện quản lý
3.6.4 Giao diện thêm mới blog
3.6.5 Giao diện chỉnh sửa blog
CHƯƠNG 4 Kết luận
4.1 Kết quả đạt được của đề tài 11
4.2 Hạn chế của đề tài 11
4.3 Kết luận 11
Trang 4CHƯƠNG 1 TỔNG QUAN VỀ ĐỀ TÀI 1.1 Lý do chọn đề tài
Cùng với sự phát triển của cuộc cách mạng công nghiệp 4.0, công nghệ thông tin
từ đó phát triển với nhiều ngôn ngữ lập trình mang đặc trưng của chính nó Vì thế, để bản thân có nhiều cơ hội việc làm hơn trong tương lai, em quyết định khám phá thêm ngôn ngữ mới cho bản thân và em quyết định chọn ngôn ngữ “Ruby on Rails” để thực hiện đề tài “SỬ DỤNG RUBY ON RAILS ĐỂ XÂY DỰNG MỘT TRANG BLOG CÁ NHÂN.”
1.1 Mục tiêu của đề tài
Trau dồi kiến thức cho môn học, có kinh nghiệm để tiếp cận với các dự án thực tế liên quan đến ngôn ngữ này
Tăng kỹ năng lập trình
Giới hạn và phạm vi của đề tài
Nhỏ, trước mắt sẽ triển khai để làm quen với Ruby on Rails
Đối tượng sử dụng: sinh viên
Tính khả thi
Xây dựng được website blog cá nhân theo yêu cầu của đề tài
Xây dựng được giao diện blog
Trang 5CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 2.1 Giới thiệu về Ruby on Rails
Đầu tiên chúng ta cần phải biết Ruby là gì Ruby là một ngôn ngữ kịch bản mã nguồn
mở, hướng đối tượng, được thông dịch Nó được tạo ra bởi Yukihiro Matsumoto và ra mắt công chúng vào năm 1995 Ruby được viết bằng ngôn ngữ C và có thể hỗ trợ nhiều nền tảng, bao gồm Windows, Mac, Linux và Unix Ngôn ngữ kịch bản thông dịch này được tạo ra với mục đích đơn giản Mục tiêu cuối cùng của Yukihiro Matsumoto với ngôn ngữ Ruby là tạo ra một mối liên hệ gắn kết giữa các lập trình viên con người và máy móc mà họ đang sử dụng
Ruby on Rails sẽ không tồn tại nếu không có Ruby Rails được lập trình bằng ngôn ngữ Ruby và phát hành ra công chúng vào năm 2005 Rails cũng là ngôn ngữ có mã nguồn mở, nhưng nó không phải là một ngôn ngữ kịch bản Ruby on Rails là một khung công tác phát triển web dựa trên kiến trúc bộ điều khiển chế độ xem mô hình (MVC) Kiến trúc MVC tách cấu trúc dữ liệu khỏi thiết kế giao diện người dùng và cung cấp các chế độ xem dữ liệu khác nhau Nền tảng MVC bao gồm các thành phần dưới đây :
Hình 1: Mẫu Model - View - Controller
Models: Các đối tượng Models là một phần của ứng dụng, các đối tượng này thiết
lập logic của phần dữ liệu của ứng dụng Thông thường, các đối tượng model lấy và lưu trạng thái của model trong CSDL Ví dụ như, một đối tượng Product (sản phẩm) sẽ lấy
dữ liệu từ CSDL, thao tác trên dữ liệu và sẽ cập nhật dữ liệu trở lại vào bảng Products ở SQL Server
Trong các ứng dụng nhỏ, model thường là chỉ là một khái niệm nhằm phân biệt hơn là được cài đặt thực thụ, ví dụ, nếu ứng dụng chỉ đọc dữ liệu từ CSDL và gởi chúng đến view, ứng dụng không cần phải có tầng model và các lớp liên quan Trong trường hợp này, dữ liệu được lấy như là một đối tượng model (hơn là tầng model)
Views: là các thành phần dùng để hiển thị giao diện người dùng (UI) Thông
thường, view được tạo dựa vào thông tin dữ liệu model Ví dụ như, view dùng để cập
2
Model
Controller View
Trang 6nhật bảng Products sẽ hiển thị các hộp văn bản, drop-down list, và các check box dựa trên trạng thái hiện tại của một đối tượng Product
Controllers: Controller là các thành phần dùng để quản lý tương tác người dùng,
làm việc với model và chọn view để hiển thị giao diện người dùng Trong một ứng dụng MVC, view chỉ được dùng để hiển thị thông tin, controller chịu trách nhiệm quản lý và đáp trả nội dung người dùng nhập và tương tác với người dùng Ví dụ, controller sẽ quản
lý các dữ liệu người dùng gởi lên (query-string values) và gởi các giá trị đó đến model, model sẽ lấy dữ liệu từ CSDL nhờ vào các giá trị này
2.2 Tổng quan về SQLite
2.2.1 Hệ quản trị CSDL SQLite
Khái niệm Hệ quản trị CSDL SQLite
SQLite là hệ quả trị cơ sở dữ liệu (DBMS) quan hệ tương tự như Mysql, Đặc điểm nổi bật của SQLite so với các DBMS khác là gọn, nhẹ, đơn giản, đặt biệt không cần
mô hình server-client, không cần cài đặt, cấu hình hay khởi động nên không có khái niệm user, password hay quyền hạn trong SQLite Database Dữ liệu cũng được lưu ở một file duy nhất
SQLite thường không được sử dụng với các hệ thống lớn nhưng với những hệ thống ở quy mô vùa và nhỏ thì SQLite không thua các DBMS khác về chức năng hay tốc
độ Vì không cần cài đặt hay cấu hình nên SQLite được sử dụng nhiều trong việc phát triển, thử nghiệm … vì tránh được những rắc rối trong quá trình cài đặt
2.2.2 Đặc điểm của SQLite
1 Nhỏ gọn: SQLite rất nhẹ và nhỏ gọn, làm cho nó trở thành lựa chọn phổ biến cho các ứng dụng di động và các dự án có yêu cầu tài nguyên thấp
2.Tích hợp: SQLite có thể tích hợp trực tiếp vào ứng dụng, không cần một quy trình riêng biệt như các hệ quản trị cơ sở dữ liệu truyền thống
3.Không cần máy chủ: Trong khi nhiều RDBMS yêu cầu một máy chủ để quản lý
cơ sở dữ liệu, SQLite hoạt động trực tiếp trên file dữ liệu, không cần máy chủ riêng biệt
4.Không cần cài đặt: Không cần cài đặt hoặc quản lý một dịch vụ cơ sở dữ liệu, điều này làm cho việc triển khai và sử dụng SQLite trở nên đơn giản
5.Hỗ trợ SQL: SQLite hỗ trợ một phạm vi rộng các câu lệnh SQL, giúp nó linh hoạt trong việc xử lý dữ liệu
2.3 Lý do chọn Ruby on Rails?
Mã HTML có thể được viết bằng các tập lệnh Rails
Kết nối dễ dàng với cơ sở dữ liệu
Phát triển ứng dụng hiệu quả
CHƯƠNG 3 NỘI DUNG THỰC HIỆN.
3.1 Đối tượng sử dụng website:
Trang 7 Đối với Admin:
- Quản lý (thêm/sửa/xóa) các blog
Đối với Khách hàng:
- Xem trang web và đọc các blog
3.2 Phân tích thiết kế hệ thống
3.2.1 Các yêu cầu chức năng chính của hệ thống
Yêu cầu lưu trữ
- Hệ thống cần lưu trữ các thông tin liên quan đến blog
- Thông tin Blog (custom_id, title, image, content)
3.2.2 Biểu đồ Use Case
Biểu đồ Use case tổng quát
3.3 Thiết kế cơ sở dữ liệu
STT Tên trường Kiểu dữ liệu Ràng buộc Mô tả
1 id int Khóa chính Số thứ tự
3.4 Cài đặt Ruby on Rails.
3.4.1 Cài đặt ruby
- Đối với chủ đề thực tập này, em sẽ sử dụng ruby version 3.2.2-1 Đây là phiên bản mới nhất và ổn định nhất
- Link dowload: RubyInstaller for Windows
4
Trang 8- Sau khi cài đặt thành công Ruby Kiểm tra kết quả bằng cách sử dụng câu lệnh: ruby-v trên cmd
3.1.2 Cài đặt SQLite3
- Ta sẽ cài version mới nhất là 3.44.2
- Link download: SQLite Home Page
3.1.3 Cài Node.js
- Đối với chủ đề thực tập này, em sẽ sử dụng version v20.10.0 Tuy đã ra mắt khá lâu nhưng phiên bản này ổn định, ít lỗi và có thể phù hợp với chủ đề
- Link dowload: Node.js (nodejs.org)
- Sau khi cài đặt thành công Node.js, công việc này sẽ cài đặt môi trường Node.js và NPM ứng với version Node.js đã cài đặt
- Kiểm tra kết quả bằng cách sử dụng câu lệnh: node -v và npm -v trên cmd
3.1.4 Cài yarn
- Cài đặt thông qua lệnh trên cmd: npm install –global yarn
- Sau khi đã cài đặt xong thì ta có thể kiểm tra bằng lệnh yarn –v
3.5 Tạo project với rails.
- Đầu tiên tạo 1 folder trong ổ D với tên “RubyonRails”
- Tạo 1 project với tên “datblog” thông qua lệnh: rails new datblog
- Sau khi quá trình cài đặt hoàn tất thì ta có thể truy cập vào project và rails project thông qua lệnh “ cd BlogwitdRuby ”
- Sau đó ta chạy “ rails s ” để khởi động trang web và sau khi trang web đã được khởi động thì ta có thể truy cập thông qua trình duyệt web với “ localhost:3000 ”
Trang 9-Tiếp theo ta tạo bảng để lưu các dữ liệu bằng cách chạy lệnh: “rails generate migration Creat“tên bảng” “tên cột”:”kiểu dữ liệu”
-Ở đây, tạo 1 bảng có tên blog với 4 cột là custom_id, title, content và image với kiểu
dữ liệu là string (rails sẽ tự động tạo ra 1 khóa chính là id)
- Tiếp đó ta tạo một model có tên tương ứng với tên bảng đã tạo trước đó là Blog
6
Trang 10-Sau khi đã tạo bảng và model thì ta cần chạy lệnh “rails db:migrate” để lưu lại các thay đổi trong hệ thống
-Tiếp đó tạo 1 controller có tên Main
3.6 Đặc tả giao diện
3.6.1 Giao diện trang chủ
Hiển thị các blog và người dùng cho thể đọc các blog đó
Trang 113.6.2 Giao diện đọc blog
Người dùng có thể đọc nội dung của blog ở đây
3.6.3 Giao diện quản lý
Tại đây cho phép quản lý các blog bằng việc thêm mới hoặc chỉnh sửa
8
Trang 123.6.4 Giao diện thêm mới blog
-Ta có thể nhập các thông tin như tiêu đề của blog, ảnh bìa và nội dung
-Để có thể lưu được tên file của hình ảnh vào cơ sở dữ liệu thì em thêm một phương thức để yêu cầu rails lấy tên file thay vì một đường dẫn do rails tự tạo ra
Trang 133.6.5 Giao diện chỉnh sửa blog
-Tại đây ta có thể sửa các thông tin của blog (tiêu đề, ảnh bìa, nội dung) hoặc xóa blog
10
Trang 14CHƯƠNG 4 Kết luận 4.1 Kết quả đạt được của đề tài
- Xây dựng 1 trang thông tin cá nhân và chia sẻ các blog
- Giao diện đẹp, màu sắc hài hòa, dễ nhìn, dễ sử dụng
4.2 Hạn chế của đề tài
- Một số chức năng còn chưa được tối ưu, thực hiện
- Chưa thêm được các chức năng như in đậm, in nghiên và chèn hình ảnh vào blog
4.3 Kết luận
Trong quá trình nghiên cứu và vận dụng các kiến thức đã học Em đã hoàn thành trang web “Blog” nhằm mục đích tìm hiểu, nghiên cứu và làm quen với ngôn ngữ lập trình mới
Trong quá trình phát triển trang web với kinh nghiệm thực tế còn chưa nhiều nên bài báo cáo không tránh khỏi những sai sót, rất mong sự góp ý của thầy cô
Em xin chân thành cảm ơn
Trang 15Tài liệu tham khảo
1) https://guides.rubyonrails.org/active_record_migrations.html
2) https://guides.rubyonrails.org/getting_started.html
3) https://pusher.com/tutorials/live-blog-ruby-rails/#creating-the-homepage
12