2012-03-09 12 views
6

mam prana internet najlepiej jak można tego problemu, ale jestem całkowicie shafted przez hasła! Binarny jako wyszukiwarek (w tym poszukiwaniu wewnętrznego StackOverflow głównej!) Rozebrać wykrzyknik.Szyny sposób debugowania tylko wyjść! Wartości binarne

Pracuję przez tutorial Rails na http://ruby.railstutorial.org - który w większości był doskonałym zasobem. Jednym z przydatnych rzeczy, które mam na dnie mojej stronie application.html.erb jest:

<%= dump(params) %> 

Powiedziano mi, że dany scenariusz powinien wyjście następuje:

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

Zamiast dostać następujące:

--- !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 

Co jest o wiele mniej pomocne.

Zakładam, że szyny mają opcję wyprowadzania danych, tak jak w pamięci (to jest w postaci binarnej) lub mogą dekodować dane i wyświetlać je w postaci zwykłego tekstu.

Oczywiście dostaję poprawne dane, tylko w niewłaściwej formie.

Pytanie brzmi, jak uzyskać wersję tekstową?

Drugie pytanie brzmi: dlaczego do cholery ma miejsce jak stackoverflow nie posiada mechanizm zawierać znaków specjalnych w wyszukiwaniach? Podstawowy błąd: IMO

+0

Również wywoływanie obiektów debug() innych niż parametry wydaje się działać poprawnie. –

+0

mu: jest tam już kilka razy pytany - po prostu uwielbiałem chwytać, ponieważ wygląda na to, że nikt nie jest zainteresowany rozwiązaniem. –

+0

Wygląda na to, że to tylko klucze, które są zakodowane, jeśli to pomaga. –

Odpowiedz

1

Wierzę, że jest to kodowanie ciągów znaków dla klucza, który jest dziwnie reprezentowany jako !binary, mimo że nie ma tam żadnych 7-bitowych znaków ASCII. Wartości są zakodowane jako base-64, który czyni je w postaci zwykłego tekstu:

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

To może być artefaktem swoim środowisku, w którym domyślne kodowanie ciąg jest nieregularny.

+0

Mój plik application.rb ma: config.encoding = "utf-8" W systemie nie powinno być żadnych znaków innych niż UTF-8. nawet jeśli to, co mówisz, jest próbą, to nie pomoże mi uzyskać rzeczywistych danych w formie zwykłego tekstu. –

4

Czy możesz spróbować zmienić z .dump na .inspect w ten sposób?

<%= params.inspect %> 
+0

To o wiele lepsze, nadal chciałbym wiedzieć, dlaczego klucze w .dump są kodowane base64. –

+0

Tylko uwaga na temat nagrody - poczekam jeszcze kilka dni, aby ktoś odpowiedział na pytanie, dlaczego .dump jest zakodowany i jak to naprawić, ale jeśli nie otrzymam odpowiedzi, przyznam tę odpowiedź, najmniej pomocny. –

+0

Dobra robota - właśnie zdobyłeś swoją pierwszą nagrodę :) –

0

To zdecydowanie zbyt późno, aby pomóc, ale mam nadzieję, że inni przychodzą na to pytanie podczas pracy przez Michael Hartl za Rails Samouczki może okazać się pomocne.

Druga edycja railsów wykorzystuje klejnot sqlite3 1.3.5.

Ta odpowiedź wyjaśnia różnice w jaki sposób rzeczy analizuje się ... YAML output from rails console

on pracował dla mnie - ja zmodernizowane gem sqlite3 do 1.3.6 w moim Gemfile, prowadził bundle install i zabity/wznowiona szyn serwer. Następnie plik binarny! Jest ponownie zmieniany na klawisze tekstowe, których można się spodziewać.

Powiązane problemy