2011-10-13 5 views
1

Rails production.log 파일을 구문 분석하고 해시 매개 변수를 다시 만들고 싶습니다. Marshall.load 메서드가 붙어있어서 실제로 데이터가 정렬 될 것으로 예상됩니다. 음, 데이터는 형식이 잘되어 있지만 String이며 마셜 예상 형식이 아닙니다. 내가 움라우트 문제를 얻을 수있는 경우에Ruby에서 문자열 해시 : Marshal.load? (Rails production.log에서 params 해시 다시 작성)

o=JSON.parse.gsub("=>",":")) 

와 함께이 문제를 해결 내 방식을 시도

{ 
"location"=>{"city"=>"München \"foo \" bar", "id"=>"462", "youtube_tags"=>""}, 
"authenticity_token"=>"UHi0GCNDBPN/Ms+0bqEOl4HGvUjDRw8tNvtqVl3v0dY=", 
"utf8"=>"\342\234\223", "textinput"=>"" 
} 

: 여기

내가 로그 파일의 요청에서 regexed 문자열입니다.

문자열에서 해시 표현을 구문 분석하거나 실제 Ruby 해시 구조에로드하는 방법이 있습니까? 아마

+0

, 그래서 문제가 표시됩니다 - 평가가 올바르게 구문 분석하지 않을 것입니다. 대답에 대해 – z3cko

답변

1

이 할 수있는 가장 좋은 방법은 아니지만 ... 난 탈출 따옴표 예를 업데이트

h = eval '{ 
      "location"=>{"city"=>"München", "id"=>"462", "youtube_tags"=>""}, 
      "authenticity_token"=>"UHi0GCNDBPN/Ms+0bqEOl4HGvUjDRw8tNvtqVl3v0dY=", 
      "utf8"=>"\342\234\223", "textinput"=>"" 
      }' 
+0

주셔서 감사합니다. 물론 eval은이 예제에서 작동합니다.하지만 불행히도 이스케이프 된 따옴표가 너무 많으므로 eval은 즉시 중단됩니다. 어떤 아이디어? – z3cko