Хеш от String в Ruby: Marshal.load?(воссоздайте хэш params из Rails production.log) - PullRequest
1 голос
/ 13 октября 2011

Я хочу проанализировать файлы Rails production.log и воссоздать параметры Hash. Я застрял с методом Marshal.load, который на самом деле ожидает, что данные будут маршалированы. Ну, данные хорошо сформированы, но это строка и не в формате, ожидаемом маршалом.

вот строка, которую я опробовал в запросе из файла журнала:

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

Я попытался обойти эту проблему с

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

в этом случае у меня проблемы с умлаутами.

Нет ли способа проанализировать или загрузить представление Hash из String в реальные структуры Ruby Hash с Ruby 1.8.7?

1 Ответ

1 голос
/ 13 октября 2011

Возможно, это не лучший способ сделать это, но ...

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