Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the wordpress-seo domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /var/www/vinascript/html/wp-includes/functions.php on line 6114
Tạo và quản lý Rake Task - Ruby on Rails - VinaScript

Latest Post

Triển khai dự án PHP, Mysql với Nginx trên Docker Tìm hiểu về HTML – Ưu điểm, nhược điểm và cách hoạt động của HTML

1. Giới thiệu về Rake Task trong Rails

Ruby on Rails sử dụng Rake để quản lý các tác vụ, mà bạn có thể xem chúng như các lệnh để điều khiển ứng dụng Rails của mình. Ví dụ về các tác vụ mà Rails hỗ trợ bao gồm `rake db:migrate`, `rake db:create`, `rake db:seed`, và nhiều tác vụ khác. Tuy nhiên, bạn cũng có khả năng tự tạo các tác vụ riêng cho dự án của mình.

Bài viết này sẽ hướng dẫn cách tạo một Rake Task để quản lý WEBrick Server trong Rails, bao gồm các tác vụ để khởi động (start), dừng (stop), và khởi động lại (restart) WEBrick Server.

2. Tạo và quản lý Rake Task

2.1. Cú pháp tạo Rake Task

Trong Rails 5, bạn có khả năng nhóm nhiều Task lại với nhau trong một Namespace. Để tạo các Task trong Namespace, bạn có thể sử dụng lệnh sau để tạo:

“`
rails g task my_namespace my_task1 my_task2
“`

Kết quả của lệnh này sẽ tạo ra một tệp tin có tên là `my_namespace.rake` trong thư mục `app/lib/tasks`. Tệp này sẽ chứa hai Task là `my_task1` và `my_task2`.

Sau khi tạo các Task trong Namespace, bạn có thể thực thi chúng bằng cách sử dụng lệnh sau:

“`
bin/rake my_namespace:my_task1
bin/rake my_namespace:my_task2
“`

Tuy nhiên, trong Rails 5, bạn cũng có thể sử dụng lệnh `rails` thay vì `bin/rake` như sau:

“`
rails my_namespace:my_task1
rails my_namespace:my_task2
“`

Điều này giúp bạn thực hiện các Task một cách dễ dàng hơn trong Rails 5.

2.2. Tạo Task quản lý WEBrick

Trong bài viết này, chúng ta sẽ tạo các tác vụ (task) để quản lý máy chủ web WEBrick của Rails 5. Để bắt đầu, hãy thực hiện lệnh sau để tạo tệp rake.

rails g task server start stop restart

Kết quả của command trên sẽ tạo ra file app/lib/tasks/server.rake có nội dung như sau:

namespace :server do
  desc "TODO"
  task start: :environment do
  end

  desc "TODO"
  task stop: :environment do
  end

  desc "TODO"
  task restart: :environment do
  end

end

Chỉnh sửa file trên để thực hiện nhiệm vụ là start, stop, restart WEBrick

namespace :server do
  desc 'TODO'
  task start: :environment do
    print "Starting WEBrickn"
    system 'rails s -d -b 127.0.0.1'
  end

  desc 'TODO'
  task stop: :environment do
    pid_file = 'tmp/pids/server.pid'
    if File.file?(pid_file)
      print "Shutting down WEBrickn"
      pid = File.read(pid_file).to_i
      Process.kill 'INT', pid
    end
    File.file?(pid_file) && File.delete(pid_file)
  end

  desc 'TODO'
  task restart: :environment do
    print "Restarting WEBrickn"
    system 'rails server:stop'
    system 'rails server:start'
  end
end

Giờ test thử các task vừa tạo với 3 command sau:

bin/rake server:start
bin/rake server:restart
bin/rake server:stop

Kết quả thật mỹ mãn

2.3. Liệt kê danh sách các Task

Sử dụng command sau để list danh sách các Task trong Rails

bin/rake -P

2.4. Override lại Task đã có

Ruby on Rails cung cấp sẵn một loạt các tác vụ để quản lý ứng dụng, và điều tốt là chúng ta có khả năng ghi đè lên những tác vụ này. Để định nghĩa lại một tác vụ, chẳng hạn như db:seed, bạn có thể tạo một tệp app/lib/tasks/db.rake với nội dung sau đây:

namespace :db do
  task seed: :environment do
    puts "We need modify db:seed task here."
  end
end

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *