Rake task Rails
Bài đăng này đã không được cập nhật trong 8 năm
Trong lập trình với rails, để tạo các bảng cơ sở dữ liệu, chắc hẳn các bạn đã quen thuộc với các lệnh rails :
rails db:create
rails db:migrate
Ngoài ra, bạn cũng đã từng định nghĩa các rake task khác để tiện sử dụng trong rails app của mình. Các file .rake trong thư mục libs/tasks/..
-
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. Rake cho phép định nghĩa các list 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 sử dụng trong Ruby vào một task chung để sử dụng lại nhiều lần.
-
Định nghĩa rake file
Để tạo rake file trong rails, sử dụng câu lệnh :
rails g task [namespace] [task]
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.
Giả sử, muốn tạo 1 rake file có tên là user:
rails g task user
->>>> Sau khi chay xong lệnh trên,
create lib/tasks/user.rake
Trong lib/tasks sẽ có thêm file rake user.rake
namespace :user do
end
Viết code định nghĩa task bạ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, …
namespace :user do
desc "This is my first rails app"
task :task => :enviroment do
end
end
Để kiểm tra các task được định nghĩa trong hệ thống:
rake -T hoặc rails -T
Một số rake trong hệ thống :
rake db:create # Creates the database from DATABAS...
rake db:drop # Drops the database from DATABASE_...
rake db:environment:set # Set the environment value for the...
rake db:fixtures:load # Loads fixtures into the current e...
rake db:migrate # Migrate the database (options: VE...
rake db:migrate:status # Display status of migrations
rake db:rollback # Rolls the schema back to the prev...
rake user:task # This is my first rails app
....
Mình tạo một task trong file user.rake
task :hello do
puts "Nice to meet you!!"
end
Sau đó mình chạy file rake :
rake hello / rails hello
->>> Kết quả:
Nice to meet you!!!
-
Một số khác về rake task
a. Dùng task này để gọi task kia.
task :hello do
puts "Nice to meet you!!"
end
task ask: :hello do
puts "What is your name?"
end
Sau đó, bạn chạy lệnh
rake ask / rails ask
->> Kết quả:
Nice to meet you!!
What is your name?
b. Lược bỏ các rake task nguy hiểm Bạn có thể dùng các lệnh rake task để giảm thiểu rủi ro, nhất là trên production:
rake db:drop
rake db:reset
hoặc
rails db:drop
rails db:reset
Trên đây là một số tìm hiểu về rake task của mình. Bài viết còn nhiều thiếu sót, mong mọi người góp ý. Cảm ơn mọi người vì đã đọc bài tìm hiểu của mình.
Tham khảo: http://railscasts.com/episodes/66-custom-rake-tasks?autoplay=true
All rights reserved