Vậy là cũng gần 2 năm kể từ khi mình trở lại với con đường Coder - Tôi đã học Ruby như thế nào. Và cũng ngần ấy thời gian, mình đã gắn bó với Ruby, ăn ngủ cùng Rails. Tuy nhiên, Ruby không chỉ có Rails, việc sử dụng Rails quá nhiều dẫn đến mình bị lệ thuộc vào Rails và các magic, monkey patching của Rails. Vì vậy, mình quyết định sẽ tìm hiểu thử các framework khác của Ruby và áp dụng cho các dự án side project sắp tới của mình.
Ban đầu, mình định quay lại với Sinatra, dù gì thì trước kia, mình đã từng dùng Sinatra và ít ra đã đọc và follow hết quyển Jump Start Sinatra rồi. Sau đó, một số cái tên đã được thêm vào short list của mình như Hanami (Lotus), CUBA và Roda. Và mình đã chọn Roda bởi vì…
Giới thiệu
- Roda đơn giản và siêu gọn nhẹ, nó không phải một framework đầy đủ và nặng nề như Rails (được phát triển bởi một người độc đoán như DHH). Nếu bạn cần một framework tốt nhưng không phải Rails thì Hanami khá là hứa hẹn. Bản thân tác giả Roda chỉ giới thiệu Roda là một Routing Tree Web Toolkit.
- Đáng tin cậy.
- Roda có khả năng mở rộng bằng cách sử dụng plugins. Tuy cộng đồng của Roda không đông đảo, nhưng vẫn có đủ các plugins cần thiết, kết hợp với hệ thống gems dành cho Ruby cũng đủ đáp ứng phần lớn các yêu cầu của bạn.
- Hiệu suất tốt hơn hẳn Rails (dĩ nhiên rồi), và nhanh hơn 2.5X so với Sinatra (Một framework cũng siêu nhẹ khác).
Tham khảo bài viết Why Roda?
Liên kết hữu ích
Một số liên kết đáng tham khảo khác:
- Roda Conventions - Vào học cách tổ chức folder dự án như thế nào? (Áp dụng cho ứng dụng nhỏ/lớn).
- Roda Documents - Tập hợp các tài liệu chính thức của Roda và các plugins có sẵn của Roda.
- Roda Skeleton with Sequel - application skeleton cho ứng dụng viết bằng Roda với Sequel làm ORM.
- Roda-app - Cũng là một application skeleton nhưng chỉ thuần Roda.
- Develop API with Roda
- Setup and deploy Roda app from scratch
- Introduction to Roda - Bạn có thể xem cách tác giả sử dụng Roda cho API, Web Sockets, Caching… như thế nào.
- Simple Roda Blog Tutorial - Tutorial hướng dẫn tạo một blog đơn giản bằng Roda, thích hợp cho các bạn chuộng học theo kiểu thực hành theo guide hướng dẫn.
Ứng dụng OpenSource viết bằng roda:
- Kontana Server, bài viết liên quan - Roda + Mutations + Jbuilder = Perfect fit for JSON API , mình học được nhiều thứ cũng như chôm chỉa được cách cấu hình, tổ chức thư mục dự án từ Kontana.
Trong quá trình phát triển ứng dụng, một phần không thể thiếu (nếu ứng dụng có tương tác với database) là ORM và Authentication. Với Roda, ORM tốt nhất là Sequel và Authentication thích hợp nhất là Rodauth, bởi cả 2 gem này đều do tác giả của Roda là Jeremy Evans phát triển và duy trì. Trong đó, Sequel được đánh giá là không thua kém so với ActiveRecord quen thuộc của Rails (Nói về Performance thì Sequel ăn đứt ActiveRecord nhé - xem chi tiết).
Một số liên kết hữu ích khi tìm hiểu vể Sequel:
- Sequel cheat sheet - Tra cứu nhanh một số cách sử dụng Sequel.
- Sequel for ActiveRecord users
- Ode to Sequel
- ActiveRecord is reinventing Sequel
- Why you should stop using ActiveRecord and start using Sequel
Khi còn dev app bằng Sinatra thì mình dùng DataMapper cho ORM.
Các plugins mình đã dùng cho side project đầu tiên - Worklog Assistant - được viết bằng roda:
- render
- environments
- multi_route
- mailer
- json
- all_verbs
- default_headers
- head
- error_handler
- Sequel Extensions Seed
Đọc thêm bài The Plugin System of Sequel and Roda để hiểu mô hình này so với các gem của Rails như thế nào.
Deploy
Có thể áp dụng các tutorial deploy dành cho sinatra, bởi vì roda cũng giống sinatra, cũng thuộc dạng Rack-based.