2017-09-22 25 views
7

Tôi có một ứng dụng ô Elixir. Các ứng dụng dưới ô sử dụng Logger. Tôi muốn thêm một phụ trợ (logger_logstash_backend) cho ứng dụng :logger. Vì vậy, tôi cần phải thêm rằng như là một phụ thuộc trong hàm deps trong tập tin hỗn hợp.Trong ứng dụng ô Elixir, nơi ứng dụng phụ trợ logger nên được thêm làm phụ thuộc?

Trong tập tin mix ngoài cùng của các ứng dụng ô, tài liệu của deps chức năng khẳng định:

Dependencies liệt kê ở đây chỉ dành cho dự án này và không thể được truy cập từ các ứng dụng bên trong thư mục ứng dụng

Điều đó có nghĩa là tôi phải thêm mô-đun phụ trợ làm phụ thuộc cho từng ứng dụng trong ô. Tuy nhiên, làm như vậy gây ra một số vấn đề:

  1. Sẽ khó khăn hơn khi di chuyển các ứng dụng riêng lẻ thành các thư viện riêng biệt sau này.

  2. Các ứng dụng riêng lẻ trong ô không thực sự phụ thuộc vào mô-đun phụ trợ :logger tùy chỉnh. Chúng được chấp nhận với phụ trợ mặc định là :console. Nhưng tôi muốn có một phụ trợ chỉ dành cho môi trường prod. Vì vậy, đó là nhiều hơn một mối quan tâm chéo ứng dụng mà tôi buộc phải thêm sự phụ thuộc vào từng ứng dụng riêng lẻ.

Bạn có biết chiến lược nào tốt hơn không? Nó là gì?

Trả lời

0

Chỉ cần bao gồm sự phụ thuộc vào (các) ứng dụng ngoài cùng của bạn. Sau đó, bạn có thể định cấu hình từng ứng dụng để sử dụng chương trình phụ trợ ghi nhật ký mới.

+0

"định cấu hình từng ứng dụng để sử dụng chương trình phụ trợ ghi nhật ký mới" <- nó có cùng 2 vấn đề mà tôi đã đề cập trong câu hỏi. –

0

Mỗi ứng dụng phải có phụ thuộc và cấu hình riêng.

vấn đề mà bạn đề cập:

  1. Nó trở thành khó khăn hơn để di chuyển ra các ứng dụng riêng lẻ như riêng biệt thư viện sau đó.

Nếu bạn có cấu hình bên trong mỗi ứng dụng, điều này thực sự giúp dễ dàng di chuyển các ứng dụng riêng lẻ ra khỏi ứng dụng ô. Như đã đề cập trong Elixir guides, bạn chỉ cần di chuyển ứng dụng ra khỏi thư mục apps/.

  1. Các ứng dụng riêng lẻ trong ô không thực sự phụ thuộc vào mô đun phụ trợ: logger tùy chỉnh. Chúng được chấp nhận mặc định: bảng điều khiển phụ trợ. Nhưng tôi muốn có một phụ trợ chỉ dành cho môi trường prod. Vì vậy, đó là nhiều hơn một mối quan tâm chéo ứng dụng mà tôi buộc phải thêm sự phụ thuộc vào từng ứng dụng riêng lẻ.

Nếu phụ trợ tùy chỉnh logger được yêu cầu chỉ trong môi trường sản xuất, sau đó các ứng dụng có thể thêm cấu hình này chỉ để config/prod.exs tập tin và sử dụng điều này chỉ trong môi trường sản.

+0

Ghi nhật ký là một mối quan tâm ứng dụng chéo. Nếu chúng ta làm cho một ứng dụng dưới ô phụ thuộc vào một phụ trợ cụ thể của logger, làm thế nào để nó dễ dàng di chuyển ứng dụng ra sau này? Ứng dụng không phụ thuộc vào trình ghi nhật ký hoạt động. –

+0

Trong ví dụ của bạn, ứng dụng phụ thuộc vào phụ trợ của trình ghi nhật ký, nhưng trong môi trường sản xuất. Bạn có thể di chuyển ứng dụng ra khỏi ứng dụng ô và vẫn có thể chạy ứng dụng bằng 'MIX_ENV = prod'. Đây là lý do tại sao việc giữ các phụ thuộc và cấu hình bên trong mỗi ứng dụng giúp dễ dàng di chuyển chúng sau này. – Emil

+0

Có thể một hoặc hai ứng dụng dưới ô sẽ được di chuyển ra ngoài và chúng sẽ không cần chương trình phụ trợ. Trong trường hợp đó, việc duy trì sự phụ thuộc vào phần phụ trợ của trình ghi nhật ký bên trong mỗi ứng dụng riêng lẻ sẽ làm cho nó khó di chuyển. –

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