2012-03-31 9 views
20

Tôi vừa tham gia lập trình đường ray và có vẻ như có hai chương trình tôi có thể sử dụng để chạy dự án của mình tại địa phương: rackup và foreman.Tại sao Foreman không xuất ra một số thứ cho đến khi tôi nhấn Control-C?

Một sự khác biệt mà tôi nhận thấy là quản đốc sẽ không xuất ra một số thứ mà tôi mong đợi để xem và tôi sẽ thấy nếu tôi chạy rackup thay thế, cho đến khi tôi nhấn ctrl + c để đóng máy chủ. Sau đó tất cả những tin nhắn đó xuất hiện, như thể chúng đang bị ẩn.

Có lý do nào cho điều này không? Làm thế nào tôi có thể nhận được quản đốc để được tiết lộ nhiều hơn?

+0

là vấn đề giải quyết cho bạn? Cân nhắc đánh dấu câu trả lời đúng hoặc cho chúng tôi biết những gì còn thiếu. – oma

Trả lời

47

Nếu bạn không nhìn thấy bất kỳ đầu ra nào từ chương trình của mình, có khả năng là nó đang lưu vào bộ đệm. Ruby buffer stdout theo mặc định.

bạn có thể khắc phục điều này bằng cách đặt đoạn mã sau vào tập tin development.rb của bạn:

$stdout.sync = true 

http://github.com/ddollar/foreman/wiki/Missing-Output

+0

Cảm ơn rất nhiều! Tôi tự hỏi tại sao điều này không được bật theo mặc định cho môi trường phát triển - cảm thấy giống như một lỗi Rails. – eblume

+0

Nhưng ở đâu, chính xác, người ta có đặt dòng này bên trong ứng dụng Rails không? Bên trong config/development.rb? – kikito

+5

@kikito yes - bên trong tệp rb môi trường của bạn. Ngoài ra, neuromancer nên chấp nhận câu trả lời này. – courtsimas