foreman은 "started with pid #"줄만 표시하고 다른 것은 표시하지 않습니다.
감독을 실행하면 다음과 같은 결과가 나타납니다.
> foreman start
16:47:56 web.1 | started with pid 27122
ctrl-c를 통해 중지하는 경우에만 누락 된 항목이 표시됩니다.
^CSIGINT received
16:49:26 system | sending SIGTERM to all processes
16:49:26 web.1 | => Booting Thin
16:49:26 web.1 | => Rails 3.0.0 application starting in development on http://0.0.0.0:5000
16:49:26 web.1 | => Call with -d to detach
16:49:26 web.1 | => Ctrl-C to shutdown server
16:49:26 web.1 | >> Thin web server (v1.3.1 codename Triple Espresso)
16:49:26 web.1 | >> Maximum connections set to 1024
16:49:26 web.1 | >> Listening on 0.0.0.0:5000, CTRL+C to stop
16:49:26 web.1 | >> Stopping ...
16:49:26 web.1 | Exiting
16:49:26 web.1 | >> Stopping ...
어떻게 고치나요?
다음 두 가지 방법으로이 문제를 해결할 수있었습니다.
에서 https://github.com/ddollar/foreman/wiki/Missing-Output :
프로그램에서 출력이 표시되지 않는 경우 표준 출력을 버퍼링 할 가능성이 있습니다. Ruby는 기본적으로 stdout을 버퍼링합니다. 이 동작을 비활성화하려면 프로그램에서 가능한 한 빨리이 코드를 추가하십시오.
# ruby $stdout.sync = true
heroku toolbelt 패키지 를 통해 포먼을 설치하여
그러나 나는 아직도 무슨 일이 일어나고 있는지, 왜 위의 두 가지 방법으로 문제가 해결되었는지 모르겠습니다.
내 솔루션은 $stdout.sync = true
config / environments / development.rb의 맨 위에 놓는 것이 었습니다 .
그러면 개발 환경 (씬 포함)을로드하는 모든 것이 표준 출력을 버퍼링하지 않습니다.
"Foreman은 실행되는 프로세스에 의해 stdout에 기록 된 모든 것을 터미널 출력에 표시합니다." -ddollar 감독 문제 # 57 참조
BTW, 로그를보기 위해 Procfile에 tailf를 사용할 수 있습니다.
web: bundle exec rails server thin -p $PORT
log: tail -f log/development.log
팁 : tailf는 OSX에 존재하지 않으며 tail -f -n 40 log / development.log가 작동합니다.
Foreman을 사용하여 Ryby 프로젝트가 아닌 Python 프로젝트를 실행하고 동일한 문제가있는 경우 다음과 같은 몇 가지 솔루션이 있습니다. Procfile을 사용하여 Python CLI를 직접 호출하는 경우 '-u'옵션을 사용하여 stdout 버퍼링을 방지 할 수 있습니다.
python -u script.py
Procfile을 사용하여 gunicorn, flask, bottle, eve 등을 호출하는 등 WSGI 서버를 관리하는 경우 다음을 포함하는 ".env"파일을 Python 프로젝트의 루트에 추가 할 수 있습니다.
PYTHONUNBUFFERED=True
같은 문제가 있습니다 (ruby 1.9.3-p0, rails 3.2rc2, OSX 10.7).
이 줄을 내 Gemfile에 추가하여 foreman-0.27.0을 사용하여 문제를 해결했습니다.
gem 'foreman', '0.27.0'
나도 같은 문제가 있었지만 다른 해결책이 있습니다. (루비 1.9.2p290, 레일 3.1.0, 우분투 10.04.3)
내 Procfile의 줄을 다음과 같이 변경했습니다.
web: bundle exec thin start -p $PORT
에:
web: bundle exec rails server thin -p $PORT
더 이상 문제가되지 않았습니다.
'IT이야기' 카테고리의 다른 글
C 함수의 시작 부분에서 (무효) '변수 이름'의 용도 (0) | 2021.04.06 |
---|---|
Bash의 Vi 명령 줄 편집에서 명령 모드와 삽입 모드를 구별하는 방법 (0) | 2021.04.06 |
다른 스레드에서 HttpContext.Current에 액세스 (0) | 2021.04.05 |
r 및 rb 모드에서 텍스트 파일 구문 분석의 차이점 (0) | 2021.04.05 |
std :: to_string-오버로드 된 함수의 인스턴스가 인수 목록과 일치합니다. (0) | 2021.04.05 |