2010-05-21 3 views
5

베타/프로덕션 서버에서 라이브 서버를 레일로 효과적으로 디버깅하는 방법은 무엇입니까? Rails의 프로덕션 서버에서 디버깅

나는 서버에 파일을 직접 수정하고 응용 프로그램을 다시 시작하려고했으나 변경 사항이 적용하지 않는 것, 또는 (캐싱?) 나는 또한하려고 노력

"스크립트에 시간이 오래 걸립니다/서버 생산 "은 매우 느립니다.

다른 옵션은 코드 작성 및 배포이지만 매우 비효율적입니다.

누구나 효율적으로 어떻게 수행하는지에 대한 통찰력이 있습니까?

답변

7

나는 귀하의 질문에 대답합니다

먼저 서버를 다시 시작한 정말 확신? 로그 파일을 테일링하여 검사하십시오.

변경된 코드로 표시되는보기가 캐시 될 수 있습니다. 캐시 된 페이지는 tmp/cache 폴더 아래에 있습니다. 수동으로 파일을 삭제하려고 시도하거나 rake tmp:cache:clear 수 있으며 모두 삭제됩니다. 어쨌든 log/production.log 파일을 꼬리로 무엇이 일어나는지 정확하게 볼 수 있습니다 ('렌더링 된 캐시 ...'와 같은 것을 알려줍니다).

또 다른 포인트 : 일부 데이터도 세션에 저장됩니다. 세션을 삭제하려고 할 수도 있습니다 (또는 모든 세션을 삭제하려고 시도 할 수도 있습니다. 세션을 DB에 유지하는 경우, rake db:sessions:clear을 실행할 수 있습니다)

+0

좋은 팁 : 캐시 : 1) 미행 로그 파일 (내가 할 수있는 꼬리 잡종뿐만 아니라 로그) 2) tmp를 긁어! 분명 (감사합니다) PS를 : 내가 직접 준비 서버 코드를 편집 할 CODA를 사용합니다. =) –

2

시도, 생산 모드에서 로컬 서버를 실행하려면 :

RAILS_ENV=production script/server 

또는

script/server --environment=production 

문제는이다, 당신은 또한 실제 생산에에 WEBrick/잡종 서버를 사용하지 않는, 이렇게하면 정확히 실제 생산 구성 (아마도 Apache 또는 Passenger를 사용하고 있습니까?)과 중복되지 않습니다. 또한 문제를 일으킬 수있는 환경에 미묘한 차이가있을 수 있습니다.

작업 환경을 변경하면 작업 환경을 어떻게 다시 시작 하시겠습니까? 이 방법은 배포 방법에 따라 다르며, 앱의/tmp에 restart.txt를 삭제하는 것만 큼 간단하거나 앱을 제공하는 Apache 또는 Mongrel 프로세스를 다시 시작하는 것만 큼 어렵지는 않습니다. 그렇게 할 때 변경 사항이 표시되는 데 오랜 시간이 걸리는 것은 이상한 것 같습니다.

프로덕션 모드에서 문제가 발생하면 일반적으로 픽스의 방향으로 나를 가리키는 production.log를 확인합니다. 이것을 개발 단계에서 구현 한 다음 재배포합니다. 그것은 보통 일을 처리합니다. Capistrano를 사용하면 설정이 내 것보다 훨씬 복잡한 경우를 제외하고는 3 가지 명령 (커밋, 푸시 및 배포) 만 필요합니다. 내가 서버 코드 : 핫 패칭의이 방법에 동의하지 않는 경우에도

+0

restart.txt는 무엇을 의미합니까? 내 설정도 간단하지만 문제는 때때로 프로덕션 환경을 사용하여 디버깅해야하기 때문에 자주해야한다는 것입니다. =) –

+0

Passenger (레일 전개 용 Apache 모듈)에서 응용 프로그램의/tmp 디렉토리에 restart.txt 파일을 작성하여 응용 프로그램을 다시 시작하십시오. 여기에서 설명서를 확인하십시오 : http://www.modrails.com/documentation/Users%20guide.HTML 번호의 _redeploying_restarting_the_rack_application – Roadmaster

관련 문제