Tôi tự hỏi liệu có bất kỳ phương pháp hay nhất nào về đặt các tệp Ruby không chuẩn trong ứng dụng Rails hay không các thư mục mặc định (controllers
/models
v.v.).hướng dẫn về vị trí đặt các lớp trong ứng dụng Rails không phù hợp với bất kỳ đâu
Tôi đang nói về các lớp được sử dụng bởi bộ điều khiển/mô hình, vv, nhưng không phải là lớp con của bất kỳ lớp cơ sở Rails nào. Các lớp bao gồm chức năng được trích xuất từ các mô hình để làm cho chúng ít chất béo hơn. Một số người trong số họ loại giống như mô hình nhưng không phải là mô hình AR, một số người trong số họ trông giống như "dịch vụ", một số là một cái gì đó ở giữa hoặc cái gì khác.
Một vài ví dụ ngẫu nhiên:
- "chiến lược" lớp học có thể xử lý xác thực với mật khẩu, thông qua facebook, vv
- "XParams" đối tượng mà gói gọn params hoặc "XCreator" các đối tượng có thể xử lý chế biến params để thực hiện một số hành động phức tạp dẫn đến việc tạo một số mô hình AR ở cuối các lớp
- yêu cầu API bên ngoài hoặc đóng gói các yêu cầu và phản hồi đó
- mô hình giả có thể được thay thế cho mô hình AR thực. er)
- việc Resque
- lớp lưu trữ và đọc thông tin từ Redis
- lớp mà thực hiện một số hành động cụ thể như xử lý dữ liệu, tạo báo cáo vv và được gọi là từ việc Resque hoặc nhiệm vụ cào
Tôi đã có khá nhiều trong số này bây giờ, một số người trong số họ được thêm vào lib
mà kết thúc lên như là một đống các lớp học ngẫu nhiên và các mô-đun, một số lẻn vào app/models
. Tôi muốn tổ chức điều này bằng cách nào đó, nhưng tôi không biết bắt đầu từ đâu.
Chỉ các mô hình AR mới đi vào app/models
? Hoặc là nó ok để cũng đặt có bất kỳ tên miền hoặc mô hình trợ giúp? Làm thế nào bạn quyết định nếu một cái gì đó là một mô hình?
Mọi thứ không phù hợp với app
đều đi vào lib
? Hoặc có lẽ tôi nên thêm một vài thư mục con tùy chỉnh mới vào app
? Những thư mục con nào, và làm cách nào để phân chia các lớp tùy chỉnh?
Bạn xử lý điều này như thế nào trong các dự án của mình? Tôi biết mỗi dự án có một chút khác biệt, nhưng phải có một số điểm tương đồng.
Tôi muốn có câu trả lời rõ ràng hơn – carbonr
@carbonr Bài viết CodeClimate là điều tốt nhất tôi đã tìm thấy, tôi đã đánh dấu nó là được chấp nhận ngay bây giờ. Quy tắc "MyTurtleFaceSpace" là một quy tắc khá tốt để tuân theo. Tôi cũng đã viết một bài viết tiếp theo về điều này sau: http://blog.lunarlogic.io/2013/declutter-lib-directory/ –