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.
Ruby On Rails ROR Phần 1: tóm tắt Giới thiệu Đặc trưng ROR Định tuyến (routing) ROR Giới thiệu ror Là framework viết Ruby Cho phép tạo web app cách nhanh cách tận dụng đặc điểm ngôn ngữ Ruby Tại gọi ruby on rails? Phần ngôn ngữ Ruby Phần Framework Rails bao gồm nhiều thư viện liên kết ROR đời để trả lời câu hỏi khó khăn việc phát triển bảo trì ứng dụng lập trình viên Một số website dùng ror Github.com Basecamp.com Twitter.com Scribd.com Slideshare.com . Cài đặt ror Ruby Rails SQLite Bundler DevKit Git . Cách giải http://railsinstaller.org Bao gồm: Ruby Rails Bundler SQLite DevKit Git TinyTDS SQL Server Support Công cụ Sublime Text JetBrains RubyMine NetBeans Aptana Studio/Eclipse . Đặc trưng ror DRY – “Don’t Repeat Yourself” – không khuyến khích viết lại mã COC – Convention Over Configuration – tạo quy ước làm thay phải tự làm thứ qua file cấu hình Đặc trưng ror Tạo giả định thứ mà nhà phát triển muốn bắt đầu Độc đoán, giả định cách tốt để làm việc Cho phép viết mã Tiện lợi cho phát triển ứng dụng lớn 10 Validation Active Record cho phép kiểm tra tính hợp lệ liệu đầu vào. Ví dụ: class Product < ActiveRecord::Base attr_accessible :description, :image_url, :price, :title validates :title, :description, :image_url, :presence => true validates :price, :numericality => {:greater_than_or_equal_to => 0.01} validates :title, :uniqueness => true validates :image_url, :format => { :with => %r{\.(gif|jpg|png)$}i, :message => 'must be a URL for GIF, JPG or PNG image.' } end 39 Quản lý Relation với Active Record Active Record lấy phần ngôn ngữ Ruby sử dụng cách đặt tên theo chuẩn làm đơn giản hóa việc tương tác table với CSDL Cú pháp sử dụng có dạng: relation :asociation :option1 => value, :option2 => value 40 Quản lý Relation với Active Record • Relation: method xác định Active Record để tạo relation table • belongs_to has_many has_one has_and_belongs_to_many join: nối bảng thông qua từ khóa through Association(s): hiểu ký hiệu đặc biệt dành cho relation tạo • Option: method sử dụng Ruby, relation có nhiều option 41 CRUD – đọc ghi liệu Active Record tự động tạo phương thức cho phép ứng dụng đọc thao tác với liệu bảng Create Read Update Delete 42 CRUD (tt) Cho model User với thuộc tính name occupation Create user = User.create(name: "David", occupation: "Code Artist") sử dụng phương thức new: user = User.new user.name = "David" user.occupation = "Code Artist" user.save 43 CRUD (tt) Read users = User.all user = User.first david = User.find_by(name: 'David') created_at in reverse chronological order users = User.where(name: 'David', occupation: 'Code Artist').order('created_at DESC') 44 CRUD (tt) Update user = User.find_by(name: 'David') user.name = 'Dave' user.save user = User.find_by(name: 'David') user.update(name: 'Dave') Delete user = User.find_by(name: 'David') user.destroy 45 Active Record Migrations Migrations tính Active Record cho phép bạn phát triển giản đồ sở liệu theo thời gian. Thay sửa đổi lược đồ quan hệ SQL, Migrations cho phép sử dụng dễ dàng Ruby DSL để mô thay đổi bảng Cú pháp: $ rails generate migration [ : : .] 46 Active Record Migrations Ví dụ: $ rails generate migration posts title :string content :text Hoặc truy cập file db/migrate/*create_posts.rb sửa nội dung: class CreatePosts < ActiveRecord::Migration def change create_table :posts |t| t.string :title t.text :content end end end Sau chạy lệnh: $ rake db:migrate 47 Part – demo blog 48 Phần – đánh giá Điểm mạnh Điểm yếu Kết luận 49 Điểm mạnh Kế thừa điểm mạnh Ruby: cú pháp dễ đọc, dễ hiểu, hướng đối tượng Giúp xây dựng web app nhanh chóng, dễ dàng 50 Điểm yếu Điểm yếu Ruby: ngôn ngữ thông dịch Chạy chậm ngôn ngữ biên dịch khác Java, C++/C Vấn đề hiệu năng: Không tối ưu hóa tốc độ Không hỗ trợ tốt thread Quản lý nhớ, thu gom rác Khó khăn phát triển tiếp ứng dụng có sẵn 51 Kết luận ROR thích hợp cho việc phát triển ứng dụng vừa nhỏ, yêu cầu thời gian phát triển ngắn, dễ bảo trì, dễ đọc hiểu, không đòi hỏi hiệu cao. 52 Tham khảo Agile Web Development with Rails Fourth Edition The Ruby Programming Language – O’ Relly https://www.ruby-lang.org/en/about/ 53 54 [...]... hiện tại khi ghi bản ghi được cập nhật 34 Rails console 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 thực hiện 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 35 Rails console Khởi động Console: $ rails console Thêm thông tin vào CSDL: table photos(filename)... :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) 18 Định tuyến trong ror 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... Định tuyến trong ror Đị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 17 Định tuyến trong ror Ví dụ: resources :posts trong routes.rb tạo ra 7 tuyến đường khác nhau trong ứng dụng,... [:edit, @post, @comment] %> 27 Phần 2 – tóm tắt Active Record là gì? ORM? Console Rails Cơ sở dữ liệu trong Rails Quản lý Relation với Active Record CRUD Migration 28 Active Record là gì? Là thành phần cơ bản, quan trọng của Rails Điều khiển sự tương tác giữa các ứng dụng Thuộc tầng Model trong mô hình MVC Đại diện cho Business Data và Logic Đam bảo việc truy cập dữ liệu logic... và Rails sẽ tự động xác định bạn muốn route nào: Trong trường hợp này Rails sẽ sử dụng post_comment_path helper 26 Tạo path và url từ object Đố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 mảng: 27 Phần 2 – tóm tắt Active Record là gì? ORM? Console...Ví dụ Rails định nghĩa sẵn các thư mục stylesheets, images, JavaScript Tự động tạo các thư mục, các file cần thiết, database 11 Ví dụ Câu lệnh: rails generate scaffold post sẽ tạo ra cả Model, View và Controller Tự động sinh ra các file: post_controller.rb post.rb folder posts gồm: edit, index, new, show.html.erb 12 Cấu trúc thư mục ứng dụng File/Folder Purpose app/ Chứa các controller,... View – Controller Model: được sử dụng để tương tác với các thành phần tương ứng với chúng trong database và validate dữ liệu View: hiển thị giao diện qua các file HTML nhúng cùng với các đoạn mã Ruby (.html.erb) Controller: tương tác với model và view, xử lý các request đến từ browser, sau đó tương tác với model để lấy dữ liệu và trả về cho view để hiển thị thông tin 15 Model – View – Controller... chúng tồn tại trong DB Thực hiện các hoạt động DB một cách hướng đối tượng 32 Quy ước cấu hình trong active record Quy ước đặt tên: Tên bảng là dạng số nhiều của tên model Tên model gồm nhiều từ tên bảng chứa các từ phân tách nhau bởi dấu gạch dưới Ví dụ: Model / Class Table / Schema Post posts LineItem line_items Deer deers Mouse mice Person people 33 Quy ước cấu hình trong active record... Data và Logic Đam bảo việc truy cập dữ liệu logic Cho phép đọc ghi dữ liệu Thao tác với DB không cần thông qua SQL 29 Object – Relational Mapping (ORM) ORM là cơ chế cho phép bạn xây dựng 1 ứng dụng mà thao tác trên table trong database được đóng gói lại trong 1 business class 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 30 ORM (tt) Thao tác truy cập, xử lý database... show.html.erb 12 Cấu trúc thư mục ứng dụng File/Folder Purpose app/ Chứa các controller, models, views, helpers, mailer và assets của ứng dụng script/ Chứa rails script để khởi động ứng dụng config/ Cấu hình routes, database db/ Chứa các database chema, migration hiện tại Gemfile Xác định những gem cần thiết cho ứng dụng Được sử dụng bởi Bundler gem Gemfile.lock 13 Cấu trúc thư mục ứng dụng File/Folder Purpose