2011-01-28 3 views
47

Tôi muốn gọi công việc cào của tôi từ bảng điều khiển. Nó có thể làm được không? nếu có, làm thế nào để làm như vậy?Làm thế nào để chạy các tác vụ cào từ bàn điều khiển?

Tôi cố gắng này trên console:

require 'rake' 
Rake::Task['my_task'].invoke 

nhưng nó cho tôi lỗi này:

RuntimeError: Don't know how to build task 

nó như cào không thể tìm thấy công việc.

bất kỳ trợ giúp nào sẽ được đánh giá cao.

Cảm ơn bạn

Chỉnh sửa: Tôi đang sử dụng đường ray 2.3.5

Trả lời

111

Chạy nhiệm vụ Rake của bạn đòi hỏi hai bước sau:

  1. tải Rake
  2. tải nhiệm vụ Rake của bạn

Bạn đang thiếu bước thứ hai.

Thông thường điều này được thực hiện trong Rakefile, nhưng bạn phải làm điều đó bằng tay ở đây: (. Hãy chắc chắn rằng bạn thay thế MyRailsApp với tên ứng dụng Rails của bạn)

require 'rake' 
MyRailsApp::Application.load_tasks # <-- MISSING LINE 
Rake::Task['my_task'].invoke 

+0

Điều này đã giải quyết được vấn đề của tôi. Cảm ơn bạn!! –

+2

Để có thêm tùy chọn, vui lòng tham khảo http://stackoverflow.com/questions/577944/how-to-run-rake-tasks-from-within-rake-tasks –

+4

Bạn có thể muốn lưu ý sự khác biệt giữa việc nói '.invoke' và '.execute', nếu bạn cần chạy tác vụ vài lần (chẳng hạn như trình kiểm tra độ tin cậy dữ liệu với một ứng dụng mất quá nhiều thời gian để khởi động) thì bạn sẽ muốn' .execute' tác vụ. –

13

Cách đơn giản nhất để làm điều đó là để chạy% x [lệnh] từ IRB. Tôi không chắc chắn nếu những gì bạn muốn đạt được mặc dù.

%x[rake db:migrate] 

EDIT: tôi khuyên bạn nên sử dụng .invoke như Daniel nói trong câu trả lời chấp nhận.

+0

vấn đề là, cào doesn dường như không nhận ra nhiệm vụ của tôi. bất kỳ ý tưởng tại sao? – Fajarmf

+0

Bạn có thể cho tôi xem Rakefile của bạn không? – garno

+0

nó hoạt động hoàn hảo @garno! xin lỗi tôi biết nó đã được một năm và đột nhiên tôi đang chạy vào cùng một nhu cầu. – Fajarmf