Метод отладки Rails только выводит! Двоичные значения - PullRequest
6 голосов
/ 09 марта 2012

Я искал в Интернете как можно лучше для решения этой проблемы, но меня полностью подставило ключевое слово! Binary, поскольку поисковые системы (включая внутренний поиск в stackoverflow!) Убирали восклицательный знак.

Я работаю через Rails tuorial в http://ruby.railstutorial.org - который по большей части был отличным ресурсом.Одна из полезных вещей, которые у меня есть в нижней части моей страницы application.html.erb:

<%= dump(params) %>

Мне сказали, что конкретный сценарий должен вывести следующее:

--- !map:ActiveSupport::HashWithIndifferentAccess
commit: Sign in
session: !ActiveSupport::HashWithIndifferentAccess 
  password: ""
  email: ""
authenticity_token: BlO65PA1oS5vqrv591dt9B22HGSWW0HbBtoHKbBKYDQ=
action: create
controller: sessions

Вместо этого я получаю следующее:

--- !ruby/hash:ActiveSupport::HashWithIndifferentAccess
!binary "dXRmOA==": ✓
!binary "YXV0aGVudGljaXR5X3Rva2Vu": ItPS/PZ+avYOGD2ckict1urJpatw1HinrVyk385/Yt8=
!binary "c2Vzc2lvbg==": !ruby/hash:ActiveSupport::HashWithIndifferentAccess
  !binary "dXNlcm5hbWU=": ''
  !binary "cGFzc3dvcmQ=": ''
!binary "Y29tbWl0": Sign in
action: create
controller: sessions

Что гораздо менее полезно.

Я предполагаю, что у rails есть возможность вывода данных в том виде, в котором они находятся в памяти (то есть в двоичной форме) илион может декодировать данные и отображать их в виде простого текста.

Я, очевидно, получаю правильные данные, только в неправильной форме.

Вопрос в том, как получить версию в виде простого текста?

Второй вопрос: почему, черт возьми, такой сайт, как stackoverflow, не имеет механизма для включения специальных символов в поиски?Фундаментальный сбой ИМО

Ответы [ 3 ]

4 голосов
/ 29 марта 2012

Можете ли вы попробовать перейти с .dump на .inspect, как это?

<%= params.inspect %>
1 голос
/ 09 марта 2012

Я полагаю, что это строковое кодирование для ключа, который странным образом представлен как !binary, хотя там нет не 7-битных символов ASCII.Значения кодируются как base-64, чтобы отобразить их в виде простого текста:

"dXRmOA==".unpack('m')
# => ["utf8"] 

Это может быть артефактом вашей среды, в которой кодировка строки по умолчанию нерегулярна.

0 голосов
/ 28 декабря 2012

Это определенно уже слишком поздно, чтобы помочь вам, но, надеюсь, другие, которые приходят к этому вопросу, работая над учебниками Майкла Хартла по Rails, могут найти его полезным.

Учебники по Rails 2-е издание использует sqlite3 1.3.5 драгоценных камней.

Этот ответ объясняет различия в разборе материала ... Вывод YAML из консоли rails

Это сработало для меня - я обновил sqlite3gem до 1.3.6 в моем Gemfile, запустил bundle install и убил / перезапустил сервер rails.После этого двоичный файл! Возвращается на текстовые ключи, которые вы ожидаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...