Sinatra and ruby
1. Giới thiệu Sinatra là một DSL để xây dựng ứng dụng web bằng Ruby nhanh nhất và ít tốn công sức nhất DSL (Domain-specific language) là một ngôn ngữ được thiết kế để thực hiện trong một lĩnh vực cụ thể, nó trái ngược với các ngôn ngữ có mục đích chung để giải quyết nhiều lĩnh vực. Sinatra là ...
1. Giới thiệu
Sinatra là một DSL để xây dựng ứng dụng web bằng Ruby nhanh nhất và ít tốn công sức nhất
DSL (Domain-specific language) là một ngôn ngữ được thiết kế để thực hiện trong một lĩnh vực cụ thể, nó trái ngược với các ngôn ngữ có mục đích chung để giải quyết nhiều lĩnh vực. Sinatra là một thư viện Ruby có trọng lượng nhẹ để tạo ra các truy cập HTTP cực kì dễ dàng. Cụ thể hơn, trong bài viết tôi sẽ hướng dẫn các bạn tạo một app đơn giản bằng sinatra để thấy sự hiệu quả của nó
2. Hướng dẫn cài đặt để tạo ứng dụng
-
Cài đặt
Đầu tiên, chúng ta cần cài đặt sinatra. Trong terminal ta gõ lệnh
gem install sinatra
ta cũng cài đặt 'shotgun' gem để sử dụng
gem install shotgun
Sau khi đã cài đặt gem, chúng ta bắt đầu tạo một ứng dụng đơn giản để hiểu thêm về nó Trước hết ta tạo một file basics.rb và require rubygems và sinatra gem
require 'rubygems' require 'sinatra'
chúng ta bắt đầu tạo "Hello world" trong basics.rb
get '/' do "Hello, World!" end
để hiển thị dòng Hello, World trên sever http://localhost:4567/ (chúng ta sử dụng Port 4567 để hiển thị) chúng ta chạy
ruby basics.rb
để khởi động server ![Screenshot from 2016-02-25 15:33:57.png](/uploads/49b30553-bd66-43ce-8975-f7d7ffa1d200.png) Chúng ta sẽ tạo một trang khác
get '/about' do 'A little about me.' end
với đường dẫn /about một dòng chữ "A little about me." sẽ hiện lên Để hiển thị ta cần phải stop sever bằng Ctrl + C sau đó khởi động lại bằng ruby basics.rb. Để tránh việc phải restart lại server mỗi lần thay đổi như vậy ta có thể sử dụng lệnh
shotgun basics.rb
nó sẽ tự động restart lại server mỗi khi có sự thay đổi. Ta sẽ sử dụng đường dẫn http://localhost:9393/about để hiển thị trang about vừa tạo ![2.png](/uploads/f4178da1-15b3-4a2b-91c6-98a668e9b381.png)
- Cho phép url với parameters
get '/hello/:name/:city' do "Hey there #{params[:name].upcase} from #{params[:city].upcase}." end
với params[:name] và params[:city] truyền trên url ta sẽ có kết quả (.upcase cho phép viết hoa) (http://localhost:9393/hello/vietanh/hanoi) ![3.png](/uploads/79b30ba8-6cfa-4f48-b6f2-569462156dee.png)
-
View Files và POST
Tạo một thư mục views cùng thư mục với file basics.rb, trong views/ tạo một file form.erb nội dung như sau:
<form action="/form" method="post"> <input type="text" name="message"> <input type="submit"> </form>
trong basics.rb ta viết
get '/form' do erb :form end
tại http://localhost:9393/form ta có ![4.png](/uploads/8fcc6294-c2d5-4b56-bc13-e7c6c7434b99.png) để thực hiện action cho click submit trên form ta phải tạo trong basics.rb một method post như sau
post '/form' do "You said '#{params[:message]}'" end
với đoạn lệnh trên khi submit ta sẽ được một dòng tin nhắn do mình nhập vào tại input ![5.png](/uploads/e7cb961a-e69d-4181-b230-b116d4a62341.png) kết quả ![6.png](/uploads/67d975fa-4773-4a98-89f9-b7a14246bd74.png) Để thông báo lỗi khi gõ sai url ta có thể thêm đoạn lệnh trong basics.rb
not_found do status 404 'not found' end
3. Kết luận
Qua bài viết, tôi đã hướng dẫn các bạn tạo một ứng dụng đơn giản với sinatra, qua đó có thể thấy sinatra rất tuyệt vời trong việc xây dựng một ứng dụng web một cách nhanh chóng.