2011-05-20 25 views
13

Có cách nào để sử dụng các biến môi trường trong khi chơi không! file application.conf? Một cái gì đó như thế này:Có cách nào để thay thế các biến môi trường trong application.conf của playframework không?

%prod.db.url=${env.DATABASE_JDBC_URL} 
%prod.db.driver=org.postgresql.Driver 
%prod.jpa.ddl=validate 

Tôi không muốn mã hóa URL trong tệp tin application.conf của tôi vì nó chứa thông tin đăng nhập mà nhà phát triển không có quyền truy cập.

+1

Tôi không hiểu cách bạn có thể ẩn thông tin này? Nếu bạn có quyền truy cập vào biến env, điều đó có nghĩa là bạn có thể đọc giá trị của nó, phải không? – mandubian

Trả lời

8

${ENV_VARIABLE_KEY} không giải quyết bất kỳ biến nào được đặt trong môi trường của bạn. bạn không phải chỉ định "env." tiền tố trừ khi đó là một phần của khóa của bạn.

+1

Yup. Đây là một tính năng mới được thêm vào để chơi sau khi tôi đăng câu hỏi ban đầu của mình. Rất tuyệt. –

3

Tôi gặp vấn đề tương tự. Giải pháp của tôi:

  • hãy application.conf chỉ với tính chất cho sự phát triển của địa phương và lưu trữ nó trong một VCS (SVN, Git, ...) cho nhóm dev của bạn
  • thêm một dòng trong file application.conf : "@ include.prod = prod.conf"
  • tệp prod.conf chỉ chứa% prod. * các thuộc tính
  • tạo tệp prod.conf trực tiếp trên máy chủ prod (hoặc lưu trữ nó trong một VCS khác với ứng dụng của bạn , chỉ những người được phép mới có thể đọc/ghi)

Nó hoạt động tốt cho tôi.

Nó chỉ cho biết thêm một thông điệp cho đội dev khi ứng dụng bắt đầu:

ví dụ: 20 mai 2011 21:09:16 play.Logger cảnh báo Chú ý: Thiếu bao gồm: @ include.prod

Thật không thành vấn đề. Chỉ cần thông báo cho đội ngũ dev của bạn rằng thông điệp này không phải là một vấn đề và để không xóa các "@ include.prod" dòng trong application.conf

Hy vọng nó giúp

12

Tất cả các biến trong $ {} được giải quyết bằng cách sử dụng sau đây nguồn:

  • $ {application.path} tương đương với Play.applicationPath.getAbsolutePath()
  • $ {play.path} tương đương với Play.frameworkPath.getAbsolutePath()
  • nào khác xuất phát từ hệ thống. getProperty.

Vì vậy, bạn có thể thêm các thông số này là -Dkey = name khi khởi chạy Play! với thông tin bí mật của bạn cụ thể cho môi trường của bạn.

+0

Tôi đã thử thêm dấu đầu dòng, nhưng ngoại lệ thời gian chạy xảy ra: 'Không thể giải quyết thay thế cho một giá trị: $ {application.path}' –

+0

thx very mach;) – Lola

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