Ruby là một ngôn ngữ lập trình mạnh mẽ và linh hoạt, được sử dụng rộng rãi trong phát triển web. Trong bài viết này, chúng ta sẽ tìm hiểu cách xây dựng các ứng dụng web bằng Ruby, bao gồm việc viết các script CGI, sử dụng thư viện cgi.rb
, xử lý form, tạo form và HTML, trích dẫn chuỗi, các phương thức hữu ích trong lớp CGI, và quản lý cookies và sessions. Chúng ta cũng sẽ bổ sung thêm một số chủ đề khác để cung cấp một cái nhìn toàn diện về phát triển web với Ruby.
Viết CGI Scripts (Writing CGI Scripts)
Common Gateway Interface (CGI) là một giao diện chuẩn cho phép máy chủ web thực thi các chương trình bên ngoài để xử lý các yêu cầu HTTP hoặc HTTPS của người dùng. Các chương trình này thường được viết bằng ngôn ngữ kịch bản và được gọi là CGI scripts.
Cấu trúc của một CGI Script
Một script CGI cơ bản trong Ruby sẽ trông như sau:
ruby
#!/usr/bin/ruby
puts "Content-type: text/html\n\n"
puts "<html><body>This is a test</body></html>"
Khi người dùng truy cập vào script này qua trình duyệt, máy chủ web sẽ thực thi script và trả về kết quả HTML cho trình duyệt.
Sử dụng cgi.rb
(Using cgi.rb)
Ruby cung cấp một thư viện đặc biệt gọi là cgi.rb
để hỗ trợ viết các script CGI. Thư viện này cung cấp nhiều phương thức hữu ích để xử lý các yêu cầu HTTP, tạo phản hồi HTML, và quản lý cookies.
Ví dụ về sử dụng cgi.rb
ruby
#!/usr/bin/ruby
require 'cgi'
cgi = CGI.new
puts cgi.header
puts "<html><body>"
puts "<h1>Hello, World!</h1>"
puts "</body></html>"
Xử lý Form (Form Processing)
Khi người dùng gửi một form, dữ liệu từ form sẽ được gửi đến máy chủ và có thể được xử lý bởi một script CGI. Thư viện cgi.rb
cung cấp các phương thức để đọc và xử lý dữ liệu form.
Ví dụ về xử lý form
ruby
#!/usr/bin/ruby
require 'cgi'
cgi = CGI.new
name = cgi['name']
age = cgi['age']
puts cgi.header
puts "<html><body>"
puts "<h1>Thông tin người dùng</h1>"
puts "<p>Tên: #{name}</p>"
puts "<p>Tuổi: #{age}</p>"
puts "</body></html>"
Tạo Form và HTML (Creating Forms and HTML)
Bạn có thể sử dụng Ruby để tạo các form HTML và các phần tử HTML khác. Thư viện cgi.rb
cung cấp các phương thức để tạo các phần tử HTML một cách dễ dàng.
Ví dụ về tạo form
ruby
#!/usr/bin/ruby
require 'cgi'
cgi = CGI.new
puts cgi.header
puts "<html><body>"
puts "<form action='/cgi-bin/process_form.rb' method='post'>"
puts "Tên: <input type='text' name='name'><br>"
puts "Tuổi: <input type='text' name='age'><br>"
puts "<input type='submit' value='Gửi'>"
puts "</form>"
puts "</body></html>"
Trích dẫn chuỗi (Quoting Strings)
Khi làm việc với dữ liệu từ URL hoặc form HTML, bạn cần phải trích dẫn các ký tự đặc biệt để tránh lỗi và bảo mật. Thư viện cgi.rb
cung cấp các phương thức để trích dẫn và giải trích dẫn các chuỗi.
Ví dụ về trích dẫn chuỗi
ruby
#!/usr/bin/ruby
require 'cgi'
cgi = CGI.new
escaped_string = CGI.escape('Emmanuel Mario/ Serious & Intelligent')
puts escaped_string # Output: Emmanuel+Mario%2F+Serious+%26+Intelligent
unescaped_string = CGI.unescape(escaped_string)
puts unescaped_string # Output: Emmanuel Mario/ Serious & Intelligent
Các phương thức hữu ích trong lớp CGI (Useful Methods in CGI Class)
Lớp CGI
trong Ruby cung cấp nhiều phương thức hữu ích để làm việc với CGI scripts. Dưới đây là một số phương thức quan trọng:
CGI#header
: Tạo tiêu đề HTTP.CGI#params
: Trả về một hash chứa các tham số từ yêu cầu HTTP.CGI#cookies
: Trả về một hash chứa các cookies từ yêu cầu HTTP.CGI#out
: Tạo phản hồi HTTP.
Ví dụ về sử dụng các phương thức CGI
ruby
#!/usr/bin/ruby
require 'cgi'
cgi = CGI.new
params = cgi.params
cookies = cgi.cookies
puts cgi.header
puts "<html><body>"
puts "<h1>Thông tin yêu cầu</h1>"
puts "<p>Tham số: #{params}</p>"
puts "<p>Cookies: #{cookies}</p>"
puts "</body></html>"
Cookies và Sessions (Cookies and Sessions)
Cookies và sessions là hai cơ chế quan trọng để lưu trữ thông tin người dùng giữa các yêu cầu HTTP.
Sử dụng Cookies
Bạn có thể sử dụng cookies để lưu trữ thông tin người dùng trên trình duyệt của họ. Thư viện cgi.rb
cung cấp các phương thức để tạo và đọc cookies.
ruby
#!/usr/bin/ruby
require 'cgi'
cgi = CGI.new
cookie = CGI::Cookie.new('name' => 'user_name', 'value' => 'John Doe', 'expires' => Time.now + 3600)
cgi.out('cookie' => cookie) do
cgi.head + cgi.body { "Cookie đã được lưu trữ" }
end
Sử dụng Sessions
Sessions cho phép bạn lưu trữ thông tin người dùng trên máy chủ và liên kết thông tin đó với một session ID duy nhất được lưu trữ trong cookie.
ruby
#!/usr/bin/ruby
require 'cgi'
require 'cgi/session'
cgi = CGI.new
session = CGI::Session.new(cgi)
session['user_name'] = 'John Doe'
session.close
puts cgi.header
puts "<html><body>"
puts "<p>Session đã được lưu trữ</p>"
puts "</body></html>"
Quản lý lỗi (Error Handling)
Khi làm việc với CGI scripts, bạn cần phải xử lý các lỗi có thể xảy ra. Bạn có thể sử dụng các khối begin-rescue
để bắt và xử lý các lỗi.
ruby
#!/usr/bin/ruby
require 'cgi'
begin
cgi = CGI.new
puts cgi.header
puts "<html><body>"
puts "<h1>Hello, World!</h1>"
puts "</body></html>"
rescue => e
puts "Content-type: text/html\n\n"
puts "<html><body>"
puts "<h1>Lỗi: #{e.message}</h1>"
puts "</body></html>"
end
Tạo các trang HTML động (Creating Dynamic HTML Pages)
Bạn có thể sử dụng Ruby để tạo các trang HTML động dựa trên dữ liệu từ cơ sở dữ liệu hoặc các nguồn khác.
ruby
#!/usr/bin/ruby
require 'cgi'
require 'sqlite3'
cgi = CGI.new
db = SQLite3::Database.new('example.db')
puts cgi.header
puts "<html><body>"
puts "<h1>Danh sách người dùng</h1>"
puts "<ul>"
db.execute("SELECT name FROM users") do |row|
puts "<li>#{row[0]}</li>"
end
puts "</ul>"
puts "</body></html>"
Kết luận
Phát triển ứng dụng web với Ruby cung cấp nhiều công cụ và thư viện mạnh mẽ để xử lý các yêu cầu HTTP, tạo phản hồi HTML, và quản lý thông tin người dùng. Bằng cách sử dụng các kỹ thuật và phương pháp được mô tả trong bài viết này, bạn có thể xây dựng các ứng dụng web hiệu quả và an toàn. Hãy tiếp tục khám phá và thực hành với Ruby để trở thành một lập trình viên giỏi hơn.