2012-11-08 1 views
1

개발 모드의 레일즈 응용 프로그램은 내부 서버 오류를 발생시키고 흔히 볼 수있는 오류 페이지가 아닙니다. log/development.log에 정보가 없습니다. 어떤 서버에 상관없이. 모든 요청에.개발 모드에서 내부 서버 오류 (500), 레일에 디버그 페이지 또는 로그 출력 없음 : utf-8

무엇이 잘못 되었나요?

+0

서버의 오류 로그를보십시오. 그것이 500이라면 루비가 참여할 기회조차 없기 전에 상황을 죽일 수 있습니다. –

답변

2

ruby ​​1.9에서 잘못된 문자 코딩으로 인해 구문 오류가 발생합니다. 루비 (와 레일)가 기본적으로 소스 파일에서 ASCII를 기대할 때 utf-8을 사용했을 가능성이 큽니다. (예, 그렇죠?)

솔루션은 BOM http://www.w3.org/International/questions/qa-byte-order-mark을 사용하거나 UTF-8 파일의 상단에

# encoding: UTF-8 

또는

# coding: UTF-8 

을 넣어하는 것입니다.

퍼팅에 당신이 차례로 해당되는

Encoding.default_external = Encoding::UTF_8 
Encoding.default_internal = Encoding::UTF_8 

에 해당되는 귀하의 config/application.rb

config.encoding = "utf-8" 

를 넣을 수 있습니다, 전 세계적으로 UTF-8을 설정하려면

# encoding: UTF-8 

또는 모든 파일의 맨 위에있는 BOM.

이렇게하면 레일즈 응용 프로그램의 모든 파일에서 utf-8이 전역 적으로 허용됩니다. 모든 루비 파일에 대한 글로벌 옵션을 원하는 경우

, 당신은 -E 또는 -K 루비 옵션을 사용할 수 있으며처럼 RUBYOPT 환경 변수를 통해 설정 :

export RUBYOPT=-Ku 

또는

export RUBYOPT='-E utf-8:utf-8' 

http://www.manpagez.com/man/1/ruby/ 참조 http://zargony.com/2009/07/24/ruby-1-9-and-file-encodings

도 있습니다. at에서는 레일스 프로젝트에서 필요한 모든 파일 위에 마술 주석을 설정합니다. h ttps://github.com/m-ryan/magic_encoding