Ruby on Rails 4 cho người mới học

Lời nói đầu

Thuật ngữ web framework đã dần trở nên phổ biến với giới lập trình web trong những năm gần đây. Các ngôn ngữ phổ biến trong giới thường là những ngôn ngữ script và tương ứng với mỗi ngôn ngữ đều có những web framework với đặc trưng và "sức mạnh" riêng. Ví dụ như ngôn ngữ lập trình PHP có thâm niên khá dài trong giới với những web framework kinh điển như Zend Framework, Symfony, CakePHP, FuelPHP, .v.v... mà hầu như mọi người đều biết. Trong cuốn sách nhỏ này, chúng tôi muốn tập hợp những kiến thức về một web framework mới của một cũng ngôn ngữ cũng mới nhưng đang dần trở nên phổ biến trong giới lập trình web: Ruby on Rails với ngôn ngữ lập trình Ruby.

Thuật ngữ web framework

Định nghĩa tiếng Anh: A web application framework (WAF) is a software framework that is designed to support the development of dynamic websites, web applications, web services and web resources. (Theo Wikipedia)

Đây là một khái niệm mới và không có từ tương đương trong tiếng Việt. Chúng ta cố gắng giải thích bằng từ ngữ một cách thật đơn giản thì hãy bắt đầu từ thuật ngữ thư viện(library) trong ngành phần mềm. Tôi không chắc mình có thể giải thích hoàn chỉnh khái niệm này bằng tiếng Việt ở đây, vì vậy rất mong các bạn có thể góp ý cho những điểm như thế này trong cuốn sách^^. Khi bạn muốn tạo ra một ứng dụng cho riêng mình, bạn có thế có nhu cầu dùng đi dùng lại một đoạn mã(code) nhiều lần. Và lẽ dĩ nhiên, việc biến đoạn mã đó thành một hàm(function) để khi dùng lại bạn chỉ việc gọi lại tên hàm đó là một công việc giúp tiết kiệm thời gian viết code. Và tập hợp nhiều hàm như vậy (sau này có thêm khái niệm class, module, ...) có thể tạm hiểu như một thư viện hàm. Ví dụ như trong ngôn ngữ lập trình C++, thư viện chuẩn STL có một gói là algorithm trong đó chứa nhiều hàm mà người thiết kế thư viện cho rằng lập trình viên sẽ sử dụng nó nhiều lần trong công việc thông thường. Trong thư viện của ngôn ngữ lập trình, các hàm đã có sẵn và bạn chỉ việc đọc sách hướng dẫn để biết tính năng và cách sử dụng. Ví như bạn muốn thay phụ tùng một cái xe máy, bạn không phải tự lắp ráp cái chống xóc hay bộ bật lửa, đồ thay thế(hàm) đã có sẵn và bạn chỉ việc lấy(gọi hàm) ra thì công việc sẽ tiết kiệm hơn bao nhiêu đúng không?

Vậy web framework thì sao? Nó cũng có thể hiểu như một tập hợp các hàm, lớp, ... được thiết kế phục vụ cho mục đích lập trình web. Nhưng ở một cấp độ cao hơn các thư việns của ngôn ngữ lập trình, web framework được thiết kế thành một hệ thống trong đó tất cả các thao tác lớn như xử lý dữ liệu, bảo mật, thiết kế, ... đã được đóng gói và khi bạn tạo ứng dụng của mình, việc bạn phải gọi những hàm từ các thư viện nhỏ lẻ của ngôn ngữ là không cần thiết nữa. Tức là thư viện của thư viện. Tất nhiên, web framework vẫn cho phép người dùng tích hợp thêm các thư viện họ muốn vào thông qua các gói như RubyGems với Ruby, Composer + Packagist với PHP, Maven với Java, ...

Hy vọng qua mô tả(chứ chưa hẳn là định nghĩa chính xác) kể trên, bạn đã có phần nào ý niệm về web framework cho riêng mình. Web framework sẽ giúp bạn tạo ra và phát triển ứng dụng của mình nhanh hơn và có lẽ, đó là mục đích nó được tạo ra.

Ngôn ngữ lập trình Ruby

Có hàng tá ngôn ngữ lập trình trên thế giới này, mỗi ngôn ngữ có điểm hay riêng và đương nhiên có những web framework riêng. Ngôn ngữ lập trình Ruby là một ngôn ngữ script.

Lịch sử: Ruby được tạo ra bởi Yukihiro "Matz" Matsumoto từ 24 tháng 2, 1993 và đưa ra bản chính thức vào năm 1995. Ruby chịu nhiều ảnh hưởng từ Perl, và khi hoàn tất ngôn ngữ này, anh đã đùa với một người bạn rằng nên đặt tên thế nào nghe cho nó giống một thứ đá quý nào đó (Perl lúc đầu cũng được đặt tên là Pearl - ngọc trai). Và bạn của anh đã gợi ý cái tên Ruby. Sau này Matz cũng bất ngờ khi phát hiện ra Pearl là viên đá quý tượng trưng cho những người sinh tháng 6, còn Ruby thì tượng trưng cho những người sinh tháng 7. Anh cho rằng cái tên Ruby như thế là phù hợp vì Ruby kế thừa và phát triển nhiều đặc tính từ Perl. Tháng 9 năm 2005, phiên bản ổn định mới nhất là 1.8.3. Ruby 1.9 (với một số thay đổi) cũng đang trong quá trình phát triển...Theo Wikipedia)

Cuốn sách này không có ý đi sâu vào giải thích ngôn ngữ lập trình Ruby, mà coi đó như bài tập dành cho người đọc. Tuy vậy có thể khái quát lại một vài đặc điểm quan trọng của ngôn ngữ như sau:

  • Ruby là ngôn ngữ lập trình hướng đối tượng: mỗi bit dữ liệu đều là một đối tượng (object), bao gồm các kiểu dữ liệu mà đối với các ngôn ngữ khác, chúng là kiểu cơ bản (primitive) như integer.
  • Ruby có khá nhiều bản implementation: MRI(Matz' Ruby Implementation)và YARV là hai bản chính thức và được dùng phổ biến hiện tại trong các bản phân phối. Hai phiên bản này được viết chủ yếu bằng ngôn ngữ C. Ngoài ra còn các bản implementation đáng chú ý khác như JRuby(bằng Java) hay IronRuby(phần lớn viết bằng .NET).
  • Ruby có ngữ pháp mềm dẻo và khá dễ học. Điều này có thể do ảnh hưởng bởi tư tưởng thiết kế của Matz: enjoy programming. Matz cố gắng tạo ra một ngôn ngữ không tạo ra quá nhiều stress cho người lập trình, và do đó một ngôn ngữ thật trực quan và dễ học đã được tạo ra.
  • Ruby có chứng chỉ GNU GPL và chứng chỉ Ruby(Ruby license).
  • Có rất nhiều ứng dụng được tạo ra bằng Ruby mà có thể bạn đã quen tai: Chef, Vagrant, Github và Ruby on Rails.

Ruby on Rails

Ruby on Rails là một web framework mã nguồn mở được tạo ra bằng Ruby. Ruby on Rails(hay RoR) được thiết kế theo kiến trúc Model View Controller(MVC).

Cấu trúc sách

Lời cảm ơn

Tokyo 2014/12/18

Nguyễn Anh Tuấn

Email: [email protected]