2014-10-17 6 views
2

Heroku 직원이 충돌하는 이상한 문제가 발생했습니다. Ruby on Rails와 백그라운드 작업을 위해 delayed_job을 사용하고 있습니다. Vero gem을 사용하여 delayed_job으로 작업을 전달하고 있습니다.Delayed_job가 Heroku 작업자를 무너 뜨림 (YAML 문제?)

--- !ruby/object:Vero::Api::Workers::Users::TrackAPI 
domain: https://api.getvero.com 
options: 
    :email: ******@gmail.com 
    :data: 
    :email: ******@gmail.com 
    :name: ? ? 
    :first_name: ? 
    :last_name: ? 
    :school_id: -1 

문제가 보인다

after_save { self.identify! } 

은 다음 그것은 다음과 같습니다 대기열에서 작업을 박았 :

내가 베로에 사용자를 "확인"할 수 있도록 전화입니다 그 물음표가 되십시오. 나는 왜 그들이 텍스트의 문자열 대신 거기에 나타나는지 모르겠다. 다른 작업을 처리 할 수 ​​있도록 허용하지 ..

Psych::SyntaxError: (<unknown>): mapping keys are not allowed in this context at line 7 column 14 

불행하게도, 작업이 바로 실패 대신 .. 실제로 작업자 충돌 : 이것은까지 오는 오류입니다.

과거에이 문제가 발생 했나요? 작업자를 충돌시키지 않는 방식으로 YAML을 포맷하려면 어떻게해야합니까?

감사합니다.

답변

2

이 사용자를 확인하십시오. db의 필드 인코딩에 동의하지 않는 데이터가 입력 된 것 같습니다. utf-8을 사용하고 있습니까? 그는 UTF-16을 입력 한 경우는 8 UTF-

+0

안녕하세요 @ 드레 -hh, 답변 주셔서 감사합니다! 테이블 설정은 .. 형식 : InnoDB, 인코딩 : cp1252 서유럽 어 (latin1), 데이터 정렬 : latin1_swedish_ci. 그래서 우리는 utf-8을 사용하지 않고 있다고 생각합니다. 그게 문제라고 생각하니? – criticerz

+0

db에있는, 'identify! '요청이이 작업자를 생성 한 사용자를 찾습니다. 'User.find_by_email 'chuck_testa @ example.com''. 그의 이름과 first_name을 확인하십시오. 또한 db 레코드를 확인하십시오. 나는이 문제가 cp1252에 의해 처리 될 수없는 기호로 이름을 입력하는 사용자들로부터 오는 것이라고 강력하게 의심합니다. 따라서 수동으로 입력을 구문 분석해야합니다. UTF-8을 사용하면 인식 할 수없는 기호로 저장되지만 전체 문자열은 손상되지 않습니다. http://stackoverflow.com/questions/2708958/differences-between-utf8-and-latin1을 참조하십시오. –

+0

이 물음표는 이 'Mojibake'라고 쓰여 있습니다. stackoverflow 게시물은 –

-2

이 밖으로 시도에 루비를 translitirate 수 있습니다 : 당신은 improper spacing 관련하여 YAML 파일 중 하나에 구문 오류가

.

+0

저자는 yaml 파일 생성에 영향을 미치지 않습니다. 이 yaml 파일은 user.identify!를 호출 한 후 delayed_job 젬에 의해 생성됩니다. 전화 할 때 신원 확인! 베로 보석은 일부 사용자 속성을 전달하여 지연된 작업자를 시작합니다. –