12/08/2018, 13:14

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

  1. 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)
  1. 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)
  1. 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.

4.

0