2016-03-25 9 views
1

In meinen RSpec E-Mail-Tests, die ich einige Textansichten mit Zeilenumbrüchen machen:Print n als tatsächlicher Newline in Terminal

class MyMailer < ActionMailer::Base 
    def email1 
    @foo = "Hello" 
    @bar = "World" 
    mail(to: "[email protected]", subject: "Foobar") 
    end 
end 

Dies ist die Ansicht email1.text.erb

<%= @foo %> 

<%= @bar %> 

Und das ist mein Test:

it 'renders output' do 
    body = MyMailer.email1.body 
    puts body 
end 

Wenn ich den E-Mail-Text im Terminal drucken, gibt Ruby \n inste zurück Anzeige eines tatsächlichen Newline:

Hello\n\nWorld 

Zum Zwecke Debuggen wäre es schön, die tatsächlichen Zeilenumbrüche statt \n in meinem Terminal gedruckt zu haben. Gibt es eine Möglichkeit, dies zu tun?

+0

Nun, das ist irgendwie komisch. Was bekommst du mit 'body.encoding'? – BroiSatse

Antwort

1

Es scheint ist. Da dies nur für den Debug-Zweck ist, können Sie es mit beheben:

puts body.to_s.gsub('\n', "\n") 

(Beachten Sie den Unterschied zwischen Anführungszeichen!). Um den richtigen Weg zu finden, müssen Sie sagen, was Ihre Körpercodierung ist, da sie für die Umwandlung Ihres rohen Nachrichtentextes in Ruby-String verwendet wird.

+0

'\ n' ist plattformspezifisch. Ziehen Sie stattdessen '$ /' in Betracht. – mudasobwa

+0

@ mudasobwa- Es gibt ein Problem mit der Mail-Codierung, mail-Juwel sollte automatisch erkennen, Zeilenenden. Ich kann nicht sagen, was schief gelaufen ist während der Umwandlung des rohen E-Mail-Körpers in Ruby-String und kann definitiv nicht sagen, auf welcher Plattform der Code läuft - es kann Windows sein, so dass '\ n'' möglicherweise verhindern, dass es funktioniert. Da dies nur zum Debuggen ist, ist es "gut genug", jedoch sollte die Codierung weiter untersucht werden. – BroiSatse

+0

Ich bezweifle, etwas im Call zu 'puts' zu verändern, könnte etwas kaputt machen. Tatsächlich würde die Verwendung von '$ /' anstelle von '\ n' dazu führen, dass dieser Code auf Windows-Computern genauso gut funktioniert wie auf _. – mudasobwa

-1

Sie müssen Zeichen entkommen. etwas weg mit Codierung verwenden \\n

+0

Wenn ich ein 'puts body.gsub (" \ n "," \\ n ") mache, gibt es nur' 'Hallo \\ n \\ nWorld \ 'zurück, aber keine neuen Zeilen im Terminal. – 23tux

0

Ich werde vorschlagen, dies zu tun email1.text.erb

<%= @foo + '\n' + @bar %> 
+0

Nein, das funktioniert nicht. Gleiches Ergebnis – 23tux

+0

Haben Sie es mit '\ n' qoute versucht? –

Verwandte Themen