2012-05-30 31 views
6

Tôi có một số vấn đề với một trong những gem hỗ trợ bộ nhớ đệm ActiveModel. Khi tôi đang sử dụng người quan sát cho mô hình được lưu trong bộ nhớ cache, trong quá trình khởi tạo ứng dụng, nó sẽ cố gắng mô tả bảng để có được tất cả các tên trường.Làm thế nào để có được tên của nhiệm vụ cào hiện tại trong mô hình Rails của tôi?

Điều tương tự cũng được thực hiện khi tác vụ rake đang chạy, bao gồm di chuyển db:. Trong trường hợp đó có một số lỗi tham chiếu vòng tròn. Tôi muốn phát hiện ra công việc cào hiện tại, để bỏ qua khởi tạo gem, nhưng tôi không biết làm thế nào để tìm ra được mã được gọi thông qua nhiệm vụ rake. Làm thế nào để kiểm tra nó?

+0

"một trong những gem hỗ trợ bộ nhớ đệm ActiveModel" - cái nào? –

Trả lời

1

Nếu bạn chạy nhiệm vụ của bạn thông qua rake task hoặc bundle exec rake task bạn có thể kiểm tra xem nó trong initializer của bạn đơn giản bằng cách:

if $0.end_with?('rake') 
    # rake stuff 
else 
    # non-rake stuff 
end 

Bạn có thể sử dụng $PROGRAM_NAME thay vì $0 nếu bạn muốn.

11

Tôi không nhận được chính xác những gì bạn đang cố gắng làm, nhưng đây là một ví dụ về việc nhận được tên nhiệm vụ.

task :testing do |task_name| 
    puts task_name 
    end 
+0

Nếu bạn có các tác vụ không gian tên, điều này sẽ hoạt động 'puts task_name.name.split (':'). Last' (trong rake v10.4.2). – spyle

8

Câu hỏi này đã được hỏi một vài địa điểm và tôi không nghĩ câu trả lời nào là tốt ... I nghĩ câu trả lời là kiểm tra Rake.application.top_level_tasks, đây là danh sách các tác vụ sẽ được chạy . Rake không nhất thiết phải chạy chỉ một nhiệm vụ.

+0

Yup, câu hỏi được hỏi về việc nhận tên và câu trả lời đã chọn cho biết cách phát hiện xem bạn có đang ở trong một công việc cào không. Đây là câu trả lời đúng. – method

+0

Tôi nghĩ điều này thanh lịch hơn là thêm 'do | task name |'. –

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