Rails cách chạy tác vụ cào


93

Làm cách nào để chạy tệp rake này trong terminal / console?

thống kê của tôi.rake trong lib / task

desc "Importer statistikker"
namespace :reklamer do
  task :iqmedier => :environment do
    ...
  end
  task :euroads => :environment do
    ...
  end
  task :mikkelsen => :environment do
    ...
  end
  task :orville => :environment do
    ...
  end
end

Câu trả lời:


130

Bạn có thể chạy các tác vụ Rake từ trình bao của mình bằng cách chạy:

rake task_name

Để chạy từ Ruby (ví dụ: trong bảng điều khiển Rails hoặc tác vụ Rake khác):

Rake::Task['task_name'].invoke

Để chạy nhiều tác vụ trong cùng một không gian tên với một tác vụ duy nhất, hãy tạo tác vụ mới sau trong không gian tên của bạn:

task :runall => [:iqmedier, :euroads, :mikkelsen, :orville] do
  # This will run after all those tasks have run
end

1
Làm cách nào để quét tất cả các tác vụ cùng một lúc hoặc tôi có cần thay đổi không gian tên thành một tác vụ?
mới bắt đầu đường ray

1
Nếu bạn muốn chạy tất cả các nhiệm vụ cùng một lúc làm nhiệm vụ: tất cả => [: a,: b: c] và sau đó chạy cào reklamer: tất cả
Spike Gronim

1
Đó không phải là một phần của câu hỏi của bạn, nhưng bạn phải thực hiện một nhiệm vụ mới gọi từng người trong số họ, có một cách viết tắt. Xem câu trả lời cập nhật của tôi.
Andrew Marshall

1
@Andrew Marshall, btw, bạn có thể sử dụng task :runall => Rake::Task.tasksnếu muốn chạy tất cả các tác vụ. Nhưng dòng này phải được khai báo sau tất cả các nhiệm vụ.
Vasiliy Ermolovich

Tác vụ: runall => đi đâu?
mới bắt đầu đường ray

25
Rake::Task['reklamer:orville'].invoke

hoặc là

Rake::Task['reklamer:orville'].invoke(args)

Cách tiếp cận này sẽ hiệu quả, nhưng cách "đúng" để gộp các nhiệm vụ raks đã được trả lời bởi @ andrew-marshall.
Tom Harrison

3
vui lòng cung cấp thông tin tham khảo nếu bạn định nói điều gì đó như 'cách "đúng" ...'. câu trả lời của tôi là một câu trả lời cho câu hỏi ban đầu.
Luke W

3
Là một bài kiểm tra lý thuyết, tôi đã cố gắng chạy Rake::Task['db:seed'].invokenhưng nó không chạy, nói rằng "không biết làm thế nào để xây dựng nhiệm vụ 'db: hạt giống"
lulalala

21

Bạn đã thử rake reklamer:iqmedierchưa?

Các tác vụ rake tùy chỉnh của tôi nằm trong thư mục lib, không phải trong lib / task. Không chắc nếu điều đó quan trọng.


1
Tôi muốn chạy tất cả các nhiệm vụ cùng một lúc
Rails mới bắt đầu

13

Đôi khi các tác vụ rake của bạn không được tải trong bảng điều khiển, Trong trường hợp đó, bạn có thể thử các lệnh sau

require "rake"
YourApp::Application.load_tasks
Rake::Task["Namespace:task"].invoke

Những câu trích dẫn đó rất tệ nhưng tôi không thể chỉnh sửa vì nó quá nhỏ so với một bản chỉnh sửa!
nroose

Mặc dù đây không phải là câu trả lời thực sự cho câu hỏi được đặt ra. Đây là những gì tôi đang tìm kiếm và giải quyết vấn đề của tôi (YourApp :: Application.load_tasks). Cảm ơn!
Dennis van de Hoef

3

Nếu bạn không chắc chắn về cách chạy tác vụ cào, trước tiên hãy tìm hiểu xem bạn có nhiệm vụ gì và nó cũng sẽ liệt kê các lệnh để chạy tác vụ.

Chạy rake --taskstrên thiết bị đầu cuối.

Nó sẽ liệt kê các nhiệm vụ như sau:

rake gobble:dev:prime             
rake gobble:dev:reset_number_of_kits                                    
rake gobble:dev:scrub_prod_data

Sau đó, bạn có thể chạy tác vụ của mình với: rake gobble:dev:primenhư được liệt kê.


1

Trong rails 4.2, các phương pháp trên không hoạt động.

  1. Đi đến Nhà ga.
  2. Thay đổi thư mục thành vị trí có tệp rake của bạn.
  3. chạy rake task_name.
  4. Trong trường hợp trên, chạy rake iqmedier - sẽ chỉ chạy tác vụ iqmedir.
  5. chạy cào euroads - sẽ chỉ chạy nhiệm vụ euroads.
  6. Để chạy tất cả các tác vụ trong tệp đó, hãy chỉ định phần sau bên trong cùng một tệp và chạy rake tất cả

    task :all => [:iqmedier, :euroads, :mikkelsen, :orville ] do #This will print all the tasks o/p on the screen 
    end
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.