2013-01-14 1 views
2

CLI에서 실행 중인지 (PHP의 php_sapi_name 함수와 같은), HTTP 요청을 처리하는지 여부를 결정하는 루비 규칙은 무엇입니까?Ruby for php_sapi_name

요청이 정의되었는지 또는 다른 추론 방법을 테스트 할 수 있다고 생각했지만 따라야하는 규칙이 있어야합니다.

+0

CLI로 무엇을 정의합니까? IRB 만? HTTP 요청은 무엇입니까? 랙에 대해서만 신경을 씁니까? –

+0

훌륭한 명확한 질문입니다. ActiveRecord/Rails 기반의 "일괄 처리"작업은 User-centric (사용자 컨텍스트가 필요 없음)이지만 Railsy 방식으로 계속 실행됩니다. 그들은 IRB가 아닙니다. 웹 트리거 요청이 아니라면 실제로이를 2 진 결정으로 사용하고 싶습니다. 미래에는 Rake 작업으로 시작될 수도 있습니다. – TJChambers

답변

1

Ruby는 웹 서버 프로세스에 포함되거나 포함되지 않은 스크립팅 언어이므로 표준화 된 방법은 없습니다. 단절된 백그라운드 프로세스로 실행 중일 수도 있지만 웹에 반드시 필요한 것은 아닙니다.

HTTP 환경에서 일반적으로 ENV['SERVER_NAME']CGI specification에서 정의 된 변수가 있습니다. 이러한 명령 줄 환경에는 존재하지 않습니다.

일반적으로 Rack 또는 Rails에서 실행 중인지 테스트하거나 HTTP 레이어와의 인터페이스에 사용되는 특정 웹 프레임 워크를 테스트하는 것이 좋습니다. 예를 들어, defined?(Rails)은 Rails가로드되었는지 표시합니다. rake 작업과 rails console 유형 사용에도 해당됩니다.