2013-02-04 36 views
6

Tôi biết tôi có thể có những điều sau để gọi một danh sách các tiểu nhiệm vụ và có mỗi một sử dụng môi trường Rails của dự án của tôi:"Private" nhiệm vụ Rake với môi trường Rails

task :main_task => [:sub_task1, :sub_task2] do 
end 

task :sub_task1 => :environment do 
    Model1.some_class_method 
end 

task :sub_task2 => :environment do 
    Model2.some_class_method 
end 


Câu hỏi của tôi là

  1. Có cách nào trong số :main_task để chuyển số :environment để tôi không phải đặt rõ ràng trong mỗi tác vụ phụ không?
  2. Có cách nào để thực hiện các nhiệm vụ phụ được coi là "riêng tư" không? Đó là, tôi không muốn họ được gọi một cách rõ ràng. Họ sẽ chỉ thực hiện từ :main_task. Về cơ bản tôi cần đọc dữ liệu từ một cơ sở dữ liệu (SQLServer) và điền vào một cơ sở dữ liệu khác (MySQL - dự án Rails), nhưng tôi muốn giữ nhiệm vụ "đọc" tách biệt với tác vụ "phổ biến" để dễ đọc.

Trả lời

6

Bạn có thể liệt kê tác vụ :environment một lần trong nhiệm vụ chính trước khi hai người kia chỉ được liệt kê một lần.

task :main_task => [:environment, :sub_task1, :sub_task2] do 
end 

Không có nhiệm vụ "tin", tuy nhiên bạn có thể giữ chúng không bị liệt kê theo rake -T bằng cách không đặt một dòng desc ở trên chúng. Bạn có thể thực thi chúng bằng tay bằng cách ném một ngoại lệ nếu chúng được gọi trực tiếp (phát hiện một cái gì đó mà cha mẹ làm, hoặc một số như vậy).

Tuy nhiên, có thể bạn sẽ có thời gian tốt hơn để đặt mã trong một phương thức hoặc lớp học được chia sẻ không được hiển thị trực tiếp dưới dạng tác vụ cào.

Các vấn đề liên quan