2013-08-08 44 views
9

Tôi đang xây dựng một JSON-only application, về cơ bản nó là một Rails gọn gàng hơn, với ít phần mềm trung gian hơn và ít mô-đun hơn. Đây là một ứng dụng được xây dựng trong Rails 4.Làm thế nào để giữ DRY với ActiveAdmin hoặc RailsAdmin, tách biệt với ứng dụng chính

Tôi muốn phát triển một ứng dụng đơn giản có thể quản trị dữ liệu trong cơ sở dữ liệu cho ứng dụng chính. Đối với điều này tôi muốn sử dụng Active Admin hoặc Rails Admin. Nhưng cả hai lựa chọn bằng cách nào đó sử dụng các mô hình cơ bản và xác nhận của họ, yêu cầu và như vậy để xây dựng trên đầu trang của.

Điều này có nghĩa là tôi cần chia sẻ ít nhất các mô hình giữa ứng dụng chính và ứng dụng RailsAdmin.

Làm cách nào để làm điều này tốt nhất? Có hướng dẫn tốt về cách xây dựng ứng dụng quản trị trong ứng dụng đường ray riêng biệt bên cạnh ứng dụng chính của bạn, thay vì tích hợp nó không?

Lưu ý: một lý do khác để giữ quản trị viên trong một ứng dụng riêng biệt từ ứng dụng chính, nhưng trên cơ sở dữ liệu được chia sẻ, là vô số phụ thuộc, đá quý như ActiveAdmin đi kèm. Cũng xin lưu ý rằng tôi không chỉ đơn giản quan tâm đến việc chạy quản trị viên trên một tên miền khác hoặc máy chủ khác, mà chủ yếu là để giữ cho ứng dụng chính hoạt động chính xác và tập trung. Và để giữ cho các phụ thuộc mà một cái gì đó như ActiveAdmin đến, ra khỏi ứng dụng chính của tôi.


chú thích:

  • Cả ActiveAdmin cũng không RailsAdmin là những vấn đề để thực hiện trong bản thân mình. Đó là họ yêu cầu phần mềm trung gian, trong khi ứng dụng Đường sắt chỉ có JSON, chỉ cần rất ít mô-đun, trình trợ giúp và phần mềm trung gian! Rails-API, cung cấp một ngăn xếp mỏng như vậy. Hiệu suất không phải là về Quản trị viên so với quản trị viên, nhưng Full-Rails và Rails-API.
  • Hiệu suất không phải là vấn đề chính của tôi, sự phụ thuộc và sưng lên! Bây giờ tôi có một ứng dụng Rails rất mỏng, tập trung và gọn gàng, nó có thể đo chính nó với hầu hết các ứng dụng Sinatra :). Chỉ với ba viên đá quý bổ sung (mỗi loại có một vài phụ thuộc của riêng mình) và một chồng các phần mềm trung gian rất mỏng, tôi có thể nâng cấp, quản lý và gỡ lỗi rất dễ dàng.

thiết thực hơn: Tôi không có lập mưu (Đó là một JSON-API, vì vậy dấu hiệu xác thực), không có bất kỳ quan điểm hay mẫu động cơ. Không Formtastic, No Paperclip, Rmagic, Kminari (máy nhắn tin) và vân vân, v.v. Tất cả đều sẽ được thêm vào ứng dụng của tôi khi tôi truy cập "chỉ là quản trị viên".

+2

Tôi sẽ xem xét việc trích xuất các lớp mô hình thành đá quý mà bạn có thể yêu cầu trong cả hai ứng dụng. Tôi sợ rằng tôi không thể đưa ra lời khuyên cụ thể, vì tôi chưa bao giờ thực sự làm điều này, nhưng về lý thuyết nó nên hoạt động. Bạn sẽ cần phải chia sẻ cơ sở dữ liệu.tệp yml bằng cách nào đó hoặc chỉ đảm bảo tệp cập nhật ở cả hai nơi. –

+0

Cảm ơn gợi ý. Điều này, quả thực, nghe như một giải pháp rất tốt cho tôi. – berkes

Trả lời

1

bạn có đo lường tác động của việc thêm các công cụ như ActiveAdmin vào tốc độ API còn lại của bạn không? nếu không, điều này nghe giống như một trường hợp tối ưu hóa sớm với tôi.

trong trường hợp tốc độ API thực sự có tác động bởi thư viện được tải nhưng không được sử dụng, thì bạn có thể tạo nhiều ứng dụng và chia sẻ mô hình trong mô đun con git.

+0

Có, tôi đã làm, mặc dù thô và rất unscientifically :). Thêm chồng đường ray đầy đủ gần gấp đôi số lượng bộ nhớ đang sử dụng. Nó tăng gấp bốn lần thời gian khởi động (chủ yếu là không thích hợp cho sản xuất) và nó làm cho (một số) các phản ứng chậm hơn ba lần. Nhưng, như tôi đã nói, có tất cả các phụ thuộc trong đó thực sự là một vấn đề. Tôi đã có một số ứng dụng vi phạm bản cập nhật vì không tương thích với ví dụ: phiên bản jQuery mà ActiveAdmin cần hoặc trình tải lên mà RailsAdmin cần. – berkes

+0

tôi thấy nó khá thú vị, rằng bạn có phản ứng chậm hơn trong sản xuất khi sử dụng một quản trị viên. bạn có xem cái này xuất phát từ đâu không? nhưng như tôi đã viết và Zach chỉ ra quá, chỉ cần chia sẻ mô hình của bạn thông qua một submodule git hoặc một viên ngọc. bundler là rất hữu ích với điều này. – phoet

+0

phoet và những người khác: Tôi đã thêm một số chú thích để làm cho các điểm của tôi về hiệu suất một chút rõ ràng hơn. – berkes