2012-08-25 41 views
8

Có thể sử dụng cron (qua đá quý bất cứ khi nào) để chạy tác vụ trực tiếp trên các mô hình động cơ có thể lắp. Các cron tôi nghĩ rằng sẽ không thể bắt đầu từ các ứng dụng chính kể từ khi động cơ gắn kết có nghĩa vụ phải được cô lập.Động cơ có thể lắp với cron (bất cứ khi nào đá quý)

Tôi có thể sử dụng bất cứ khi nào trong một ứng dụng đường ray bình thường và nó hoạt động tốt nhưng tôi có nhu cầu chạy các tác vụ theo cách thức động cơ.

Cảm ơn

Trả lời

3

Bạn không thể tự mình thực hiện các nhiệm vụ Rails Engine của riêng mình và thực thi trực tiếp, chẳng hạn như tác vụ Rake hoặc gọi Mô hình. Hãy nghĩ về một Rails Engine như một ứng dụng Rails nhỏ. Nó cung cấp chức năng và các tính năng cho phụ huynh Rails App. Ngày của riêng mình, Engine không đầy đủ. Với Engine được gắn vào một ứng dụng Rails, nó có quyền truy cập vào tất cả các cấu hình và khởi tạo cần thiết để khởi động và vận hành chính xác.

Nhiệm vụ Rake cho Động cơ được gắn kết được kế thừa vào ứng dụng Rails gốc. Thực hiện tiếp theo nên bao gồm danh sách các nhiệm vụ Rake từ Engine

rake -T 

Từ Rails runner, bạn có thể thực hiện mô hình các gắn Rails Engine, libs vv là tốt. Khi truy cập các tính năng của Engine, bạn phải sử dụng không gian tên của Engine. Dưới đây là ví dụ từ số Rails Guide để truy cập Mô hình từ Động cơ:

Blorgh::Post.find(1) 
+0

Tôi vẫn còn tương đối mới đối với động cơ ray và động cơ có thể lắp được vì vậy đây là đường cong học tập. Vì vậy, từ những gì bạn đề cập đến nó rõ ràng một chút lên cho tôi trong hiển thị cho tôi rằng tôi có thể chạy cron trực tiếp trên mô hình động cơ nhưng thực hiện sẽ cần phải bắt đầu từ các ứng dụng máy chủ lưu trữ. Bị cô lập Tôi nghĩ rằng động cơ gắn kết chỉ là, hộp đen nhưng từ những gì bạn đề cập tôi đã thử nó và nó hoạt động thực sự tốt cho tôi. Tôi sẽ đánh dấu câu hỏi này chính xác vì nó đã giải quyết đúng vấn đề động cơ ray của tôi và cho tôi một cái nhìn sâu sắc hơn vào động cơ. – pieterk

0

Nhà thiết kế của Rails chắc chắn không có ý định. Bất cứ khi nào dựa vào kịch bản á hậu của đường ray, không được hỗ trợ cho các plugin có thể gắn kết (vì lý do chính đáng - không có ứng dụng nào để chạy với trình chạy). Có thể tìm ra một số cách khác để thực thi mã bằng cách định cấu hình bất cứ khi nào sử dụng một trình thực thi ruby ​​khác (bảng điều khiển đường ray, IRB, v.v.) nhưng điều này có thể có kết quả không mong muốn vì nó không nằm trong ngữ cảnh của ứng dụng, vì vậy bạn có không có cấu hình hoặc môi trường.

Tuy nhiên, bạn nêu rõ: The cron I think would not be able to start from the main app since mountable engines are supposed to be isolated, nhưng tôi đã thử nghiệm và điều đó không đúng. Miễn là bạn không gian tên nhiệm vụ Á hậu một cách thích hợp, ứng dụng của bạn bất cứ khi nào tập tin cấu hình sẽ xác định vị trí nhiệm vụ thích hợp trong mã plugin và sẽ có thể thực hiện nó. Vui lòng cho tôi biết nếu vì một lý do nào đó sẽ không hoạt động cho các nhu cầu cụ thể của bạn.