문제

승객을 사용하여 Sinatra 앱을 배포하고 있습니다. 배포 된 앱이 작동하지만 완전히 작동하는 것은 아닙니다. 일부 경로는 잘 작동하고 다른 경로는 단순히 빈 페이지를 렌더링합니다. 작동하는 경로와 그렇지 않은 경로간에 큰 차이가있는 것 같습니다. 오류를 추적 할 수없는 것 같습니다.

핸들러

NOT_FOUND 및 오류 처리기를 다음과 같이 정의했습니다.

not_found do
  '404. Bummer!'
end

error do
  'Nasty error: ' + env['sinatra.error'].name
end

이것들은 개발과 생산에서 내 지역 기계에서 잘 작동하지만 서버에서 나오는 것을 볼 수는 없습니다.

아파치 로그

Apache의 액세스를 꼬리면서 틀고 깨진 경로 중 하나를 쳤을 때 500이 보입니다.

helpers [27/Oct/2009:15:54:59 -0400] "GET /admin/member_photos/photos HTTP/1.1" 500 20 "-" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3"

rack_hoptoad

또한 설치 및 구성했습니다 rack_hoptoad config.ru의 미들웨어이지만 Hoptoad에 대한 예외는 없습니다.

# Send exceptions to hoptoad
require 'rack_hoptoad'
use Rack::HoptoadNotifier, 'MY_API_KEY'

벌채 반출

그렇게 로깅을 설정했습니다 ..

set :raise_errors => true
set :logging, true

log = File.new("log/sinatra.log", "a+")
STDOUT.reopen(log)
STDERR.reopen(log)

require 'logger'
configure do
  LOGGER = Logger.new("log/sinatra.log") 
end

helpers do
  def logger
    LOGGER
  end
end

이 설정을 통해 전화 할 수 있습니다 logger.info 내 경로 내에서 로컬 및 서버에서 작업 경로를 위해 작동하지만 깨진 경로는 Logger.info를 호출하기에 충분히 멀지 않습니다.

무엇을해야합니까?

500 오류의 원인을 어떻게 알 수 있는지에 대한 아이디어가 있습니까? 도움을 주셔서 감사합니다!

도움이 되었습니까?

해결책

랙 :: showexceptions 미들웨어를 사용하여 문제를 추적하려고 시도합니다. config.ru에서 런 호출 전에이 두 줄을 추가하십시오.

require 'rubygems'
require 'your-app'

use Rack::ShowExceptions

run YourApp

이는 랙이나 앱에서 발생하는 예외에 대해 역통을 잡아서 표시해야합니다. 그것은 당신에게 더 많은 세부 정보를 제공해야합니다. 적어도 그것은 희망이 될 것입니다.

다른 팁

로그 설정에 문제가 있습니까?

sinatra 서버를 실행할 때 stderr를 리디렉션하여 읽을 수 있습니다. 처럼:

ruby myapp.rb -p 1234 > log/app.log 2>&1

응답에 감사하지만, 나는 그것들을 사용할 필요가 없었습니다. 원래 앱을 배포하고있었습니다 하위 우리 구성. 대신 앱을 자체 하위 도메인에 배포하면 문제가 사라졌습니다.

그래서 .. 문제가 무엇인지 확실하지 않지만이 라인을 제거하는 것은 사이트의 내 아파치 구성이 해결 된 것입니다.

Redirect permanent / https://www.example.org/admin/member_photos/
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top