2012-03-21 8 views
10

Tôi muốn đá quý foreman sử dụng giá trị PORT được cung cấp trong tệp env phát triển của tôi thay vì sử dụng các giá trị riêng của nó. thiết lập tập tin của tôi được hiển thị dưới đây:Tại sao đá quý foreman bỏ qua biến môi trường PORT?

  1. Một kịch bản bash để bắt đầu quản đốc:

    đốc bắt đầu development.env -e

  2. Nội dung tập tin development.env:

    PORT = 3000

  3. Nội dung của Procfile

    web: đường ray exec bó máy chủ -p mỏng $ PORT -e $ RAILS_ENV $ 1

Máy chủ dev kết thúc bắt đầu trên cổng 5000. Tôi biết tôi có thể bắt đầu quản đốc với --p 3000 để buộc nó để sử dụng cổng đó. Nhưng điều đó đánh bại mục đích của tập tin env.

Mọi đề xuất?

Trả lời

10

Tôi biết đây là một bài đăng cũ nhưng tôi phải mất một lúc để tìm hiểu cũng như có thể thêm ghi chú ở đây.

Quản trị viên tăng PORT dựa trên nơi bạn xác định dịch vụ trong Procfile.

Say biến môi trường PORT của chúng tôi được thiết lập để 3000.

Trong lần đầu tiên dụ Procfile của chúng tôi Puma sẽ chạy trên PORT 3000:

web: bundle exec puma -q -p $PORT 
worker: bundle exec rake jobs:work 

Nhưng trong Procfile thứ hai của chúng tôi nó sẽ chạy trên PORT 3100 như Biến PORT được sử dụng trên dòng thứ hai.

worker: bundle exec rake jobs:work 
web: bundle exec puma -q -p $PORT 

Không chắc chắn lý do tại sao, tôi đoán để ngăn các quá trình khác nhau cố gắng lấy cùng một PORT.

+2

Khéo léo! Cảm ơn rất nhiều vì đã đăng giải pháp của bạn. –