2010-09-24 35 views
6

Tôi mới làm quen với Rails và đã học với Rails 3 trên một dự án phụ. Có những lúc tôi muốn viết một số mã không thuộc về các mô hình của tôi hoặc trong các bộ điều khiển của tôi - các mối quan tâm liên quan đến một mô hình và/hoặc bộ điều khiển, nhưng tôi không muốn làm lộn xộn một trong số chúng với các chi tiết thực hiện về những gì tôi đang viết.Đường ray: Bạn đặt mã phi mô hình ở đâu?

Ví dụ: dự án tôi đang xây dựng sử dụng hệ thống ủy quyền của Janrain (RPX) để tôi có thể nhận ủy quyền oauth, openid, google, v.v. có một đoạn mã API tuyệt vời mà họ cung cấp vì vậy tôi không phải tự viết tất cả. mã này không thuộc về bộ điều khiển đăng nhập hoặc trong mô-đun người dùng. đó là mã ủy quyền, vì vậy nó cần phải được truy cập bởi bộ điều khiển đăng nhập, nhưng nó không phải là một phần của bộ điều khiển đó.

Bạn đặt mã này ở đâu? nó không phải là mã mẫu. nó không thuộc về bộ điều khiển.

... cảm ơn trước.

Trả lời

5

Bạn sẽ có thể sử dụng thư mục lib trong thư mục gốc của mình (trừ khi nó được thay đổi trong Rails 3).
Bạn có thể tham khảo các lớp học từ đó mà không cần tuyên bố require.

+0

Đánh bại tôi sau 30 giây :) +1 – Matchu

+1

Rails 3 không tự động yêu cầu từ lib, vì vậy bạn nên yêu cầu rõ ràng. –

+0

Andrew - tôi có cần sử dụng bất cứ thứ gì như Rails.root để vào thư mục lib không? hoặc tôi chỉ sử dụng 'lib /'? –

4

Đề xuất 'phổ biến' là để nói 'đặt công cụ này trong lib'. Nhưng có những địa điểm khác cần xem xét:

  1. Cân nhắc tạo một thư mục con trong app. Một số ví dụ bao gồm: app/workers, app/observers, app/sweepers hoặc bất kỳ điều gì có ý nghĩa đối với bạn.

  2. Cân nhắc sử dụng config/initializers cho mã khởi tạo.

  3. Cuối cùng, và chỉ khi điều trên không có ý nghĩa, bạn có thể sử dụng lib. Đừng quên bạn có thể sử dụng các thư mục con để giữ cho nó không bị quá tải.

Và, khi bạn làm việc và đánh bóng, hãy xem xét trích xuất mã của bạn thành đá quý. Xem, ví dụ, RailsCast trên Creating a New Gem with Bundler.

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