Rake và cách dùng hiệu quả trong Rails app

Bạn đã lập trình Rails, chắc hẳn sẽ không xa lạ gì với một số rake task sau rake db:create, hoặc rake db:migrate có đúng không? Ngoài ra bạn cũng đã từng định nghĩa một số rake task khác để tiện sử dụng trong app, các file .rake trong thư mục lib/tasks/?

Bài viết sau xin tóm tắt vài điều thú vị và cần thiết để bạn viết, hiệu chỉnh và sử dụng chúng hiệu quả trong quá trình phát triển app.

 

Rake?

Rake do tác giả  Jim Weirich phát triển với ý tưởng là một công cụ hỗ trợ chạy các ruby code bên trong các Makefile. Rake cho phép bạn định nghĩa list các task kèm theo dependency của nó, với mục đích gom nhóm các đoạn code Ruby thường xuyên được thực hiện vào một task chung và sử dụng lại chúng nhiều lần.

 

Định nghĩa rake file

  1. Tạo rake file bằng cách tạo file mới .rake, hoặc dùng lệnh sau nếu trong project rails

lệnh trên sẽ tạo một file .rake mới ngay trong thư mục lib/tasks/ với tên file trùng với tên task của bạn.

 

  1. Viết code định nghĩa task bạn cần thực hiện, chú ý định nghĩa dependency :enviroment để có thể load các dữ liệu cần thiết từ rails app nhé chẳng hạn như các model, …

 

  1. Kiểm tra lại danh sách các tasks được định nghĩa trong hệ thống

 

  1. Chạy file task của bạn

Một số thú vị khác

1. Sử dụng tham số hoặc biến ENV trong rake task

Sử dụng biến ENV

gọi task

 

Cách 2 là truyền tham số

run rake với lệnh

 

 2. Sử dụng với namespace

Rake cho phép bạn định nghĩa các tasks trong các namespace khác nhau với mục đích phân nhóm các tasks có cùng nhiệm vụ vào chung một group. Cách định nghĩa

 

3. Thêm mô tả chi tiết cho rake task

Bạn có thể thêm các đoạn mô tả chi tiết cho từng task với desc

 

4. Một task gọi các tasks khác

task :all trên sẽ gọi thực hiện theo tuân tự các task khác là :step_1, :step_2, :step_3

 

5. Định nghĩa lại một task

Bạn muốn định nghĩa task rake db:migrate mặc định? Bạn có thể định nghĩa lại task đó với cùng tên, tuy nhiên bạn chú ý task định nghĩa mới không override hoàn toàn task cũ mà chỉ định nghĩa thêm các lệnh phía sau task đó.

 

6. Invoke một task khác bên trong một task

 

7. Default rake task

Bạn muốn mỗi lần đánh rake là sẽ tự động chạy môt task nào đó mặc định, dùng vơi task name :default nhé

 

8. Lược bỏ các rake task nguy hiểm như rake db:drop, rake db:reset để giảm thiểu rủi ro, nhất là trên production:

Bài viết sau mô tả khá chi tiết để giải quyết vấn đề trên http://www.developingandstuff.com/2014/06/disable-dangerous-rake-tasks-in.html

 

Okie, that’s all!

 

Hoài An

Admin at RubySG.com. Website: http://jacky.rubysg.com/

You may also like...