2016-01-12 17 views
5

Có thể đặt biến môi trường Heroku mà không cần khởi động lại ứng dụng không?Đặt biến môi trường Heroku mà không cần khởi động lại ứng dụng

Ứng dụng của tôi kết nối với các dịch vụ trực tuyến khác nhau qua OAuth2. Đối với mỗi dịch vụ tôi kết nối, tôi cần đặt một ID và mật khẩu OAuth2. Để giữ các biến cấu hình bên ngoài mã của tôi, tôi đang sử dụng các biến môi trường và đọc chúng ở trên process.env (node.js).

Mỗi khi tôi thêm một dịch vụ mới vào ứng dụng của mình, tôi cần thêm các biến môi trường tương ứng cho ID và bí mật. Tôi cần phải làm điều này trước khi đẩy mã mới nhất, để khi ứng dụng tiếp theo bắt đầu với kết nối dịch vụ mới, ID OAuth2 và biến bí mật có sẵn.

Hiện tại công việc của tôi là như sau:

  1. Đặt biến môi trường bằng cách sử dụng toolbelt Heroku: heroku config:set <SERVICE>_ID=foo <SERVICE>_SECRET=bar
  2. Đẩy mã mới nhất: git push heroku master

Hiện nay, cả những hoạt động sẽ khởi động lại ứng dụng. Tôi thực sự thích hoạt động đầu tiên không khởi động lại ứng dụng, vì những thay đổi đối với các vars cấu hình này không cần phải có hiệu lực cho đến bước 2). Bằng cách khởi động lại ở bước 1) ứng dụng của tôi sẽ trải nghiệm thời gian ngừng hoạt động không cần thiết.

Vì vậy, có cách nào để ngăn bước 1) khởi động lại ứng dụng không?

+1

Bạn không thể thay đổi biến môi trường cho một quy trình đang chạy. Bạn chỉ có thể thao tác nó từ bên trong ứng dụng. Nhưng nếu bạn cần thay đổi biến môi trường trong khi ứng dụng đang chạy, bạn vẫn đang làm gì đó sai. – poke

+0

Cảm ơn nhận xét, nhưng nếu bạn chú ý, tôi thực sự đang thêm biến môi trường, không thay đổi biến hiện tại. Vì vậy, tôi không nghĩ rằng điều này được tính là 'làm điều gì đó sai'? – fiznool

+0

Bạn đang đặt bí mật dịch vụ sau khi ứng dụng đang chạy. Bí mật dịch vụ là một cấu hình không bao giờ thay đổi trong khi ứng dụng đang chạy. – poke

Trả lời

3

Theo this article nó khá rõ ràng rằng

Bất cứ khi nào bạn đặt hoặc xóa một var cấu hình, ứng dụng của bạn sẽ được khởi động lại.

Cá nhân tôi cũng muốn có cách để làm những gì bạn đang yêu cầu. Trên các ứng dụng lớn hơn, việc khởi động lại toàn bộ hệ thống có thể gây đau đớn khi bạn có nhiều loại quy trình đang chạy. Nhiều lần tôi đặt biến môi trường không quan trọng để ứng dụng chiếm giữ ngay lập tức, chẳng hạn như liên quan đến chức năng trong tương lai hoặc cài đặt có giá trị cũ nhưng bạn muốn giá trị mới có hiệu lực khi khởi động lại thời trang.

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