5

Có thể tạo các ứng dụng toàn bộ đường ray trong một không gian tên chung không?Tôi có thể có các không gian tên phổ biến trong các ứng dụng đường ray mới không?

Giả sử rằng tên công ty của tôi là Acme, Inc. và tôi có các dự án đường ray sau: Blog, Store, WebService.

Theo mặc định, nếu tôi làm điều gì đó như rails new blog các ứng dụng được tạo ra sẽ như thế nào:

module Blog 
    class Application < Rails::Application 

module Store 
    class Application < Rails::Application 

module WebService 
    class Application < Rails::Application 

nơi mỗi dự án/ứng dụng là khép kín và không có tài liệu tham khảo ngầm cho công ty. Lý tưởng nhất là tôi muốn có tất cả các ứng dụng này theo những namespace công ty, vì vậy chúng tôi có thể giới thiệu cho họ như:

AcmeInc::Blog::Application 
    AcmeInc::Blog::Entities::Article 

AcmeInc::Store::Application 
    AcmeInc::Store::Entities::Product 
    AcmeInc::Store::Entities::Order 
    AcmeInc::Store::Entities::Customer 

etc... 

Đây có phải là có thể? Được khuyến nghị?


Sử dụng: ruby-2.0.0-p451, đường ray 3.2.17


Cập nhật

Snapshot của tập tin được tạo và cơ cấu dự án sau khi làm đường ray mới acme/blog như đề xuất :

snapshot

+0

Sau đó, cách bạn có thể gọi các phương thức lớp đó và nơi bạn đưa vào mô-đun đó? –

+0

3 ứng dụng đó phải độc lập với nhau. Các phương thức và mô-đun lớp phải được gọi giống như cách chúng được gọi trên ứng dụng mặc định. Bao gồm cả AcmeInc chỉ để nhóm tất cả các ứng dụng này theo mã nhận diện codebase của công ty. Đây là thủ tục rất phổ biến trên thế giới .net, nhưng tôi không chắc chắn nếu ruby ​​/ rails ứng dụng nên làm theo cùng một mô hình, do đó câu hỏi của tôi. – qbantek

+0

Tính năng nhóm đó phục vụ mục đích gì? Nếu bạn đang cố gắng có các ứng dụng độc lập chia sẻ một số yếu tố và tương tác, bạn có thể muốn xem [Rails engines] (http://guides.rubyonrails.org/engines.html). Nếu mối quan tâm của bạn chỉ là không gian tên cho mục đích thẩm mỹ, tôi nghĩ bạn có thể đang chiến đấu với một số công ước ở đó. – tirdadc

Trả lời

1

Cách chính xác để làm điều này là với động cơ. Mỗi động cơ giống như một ứng dụng độc lập, với các tuyến đường riêng của nó, bộ kiểm tra, vv, nhưng bạn có thể có một số cơ sở hạ tầng thông thường như nhiệm vụ cào vv

http://guides.rubyonrails.org/engines.html

0

Nếu bạn r cố gắng quản lý mã của bạn, tại sao bạn không chỉ tạo một Blog Gem mà bạn có thể đưa vào trong mỗi ứng dụng. Sau đó, bạn sẽ quản lý mã dưới một kho lưu trữ chung cho Gem. Nói với tôi đó là cách Rails/Ruby để làm điều này

1

Tôi nghĩ rằng tôi có thể trễ đây để trả lời này , như những người khác đã đề xuất phương pháp tiếp cận tốt đẹp. Giống như, duy trì mã trong một kho lưu trữ chung và tạo công cụ đường ray.

Tôi muốn chia sẻ dự án nổi tiếng này được gọi là Spree, theo kiến ​​trúc mà bạn đang tìm kiếm. Bạn có thể truy cập vào số code on github here của Spree.

Ví dụ:

  • Spree::Core - spree_core động cơ như một viên ngọc để duy trì tất cả các mô hình và mô-đun cơ sở, vv
  • Spree::Backend - spree_backend động cơ như một viên ngọc để duy trì tất cả các bộ điều khiển quản trị liên quan, lượt xem, nội dung, v.v.
  • Spree::Frontend - spree_frontend động cơ làm đá quý để duy trì mã người dùng con lăn, lượt xem, tài sản liên quan đến nó.

Tôi đoán bạn có thể sử dụng nó làm tài liệu tham khảo để phát triển ứng dụng của mình.

+0

Cảm ơn bạn đã đề cập đến Spree. Tôi đang giả mạo mã để sử dụng nó như là một tài liệu tham khảo cho một dự án. – qbantek

+0

Chắc chắn, tôi cũng sẽ khuyến khích bạn xem xét cơ sở mã đường ray. Nó sẽ giúp bạn hiểu được kiến ​​trúc khung và hack. :) – Surya

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