Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Verwendung von .to_str richtig? #25

Open
ronaldmueller opened this issue Jan 26, 2018 · 2 comments
Open

Verwendung von .to_str richtig? #25

ronaldmueller opened this issue Jan 26, 2018 · 2 comments

Comments

@ronaldmueller
Copy link

ronaldmueller commented Jan 26, 2018

in https://github.com/infopark/reactor/blob/master/infopark_reactor/lib/reactor/attributes/html_serializer.rb#L8
befindet sich ein .to_str, vermutlich es sollte es aber ein .to_s sein

gemeldet von Marvin Mundry von der Uni HH

@ronaldmueller ronaldmueller changed the title Tippfehler Verwendung von .to_str richtig? Jan 26, 2018
@tprzedmojski
Copy link
Contributor

tprzedmojski commented Jan 26, 2018

hai,
ich bin mir nicht sicher 100% ob es sich hier um einen Bug handelt, oder ob ich das tatsächlich beabsichtigt habe.

Diese Methode sollte nur Strings als Values bekommen oder etwas was von String abgeleitet ist. Die Klasse String definiert die Methode .to_str.: https://ruby-doc.org/core-2.3.4/String.html#method-i-to_str

Schön, aber warum?

Die Antwort ist ActiveSupport::SafeBuffer:

irb(main):001:0> a = "abc".html_safe
=> "abc"
irb(main):002:0> a.class
=> ActiveSupport::SafeBuffer
irb(main):003:0> a.to_str
=> "abc"
irb(main):004:0> a.to_str.class
=> String
irb(main):005:0> a.to_s
=> "abc"
irb(main):006:0> a.to_s.class
=> ActiveSupport::SafeBuffer

Okay, also mit to_str bekommt man einen echten String aus einer Klasse, die String vererbt. Aber warum? Dieser Code, der ursprünglich, glaube ich, aus Fiona Connector stammt:
https://github.com/infopark/reactor/blob/master/infopark_reactor/lib/reactor/attributes/html_serializer.rb#L19

funktioniert nicht mit ActiveSupport::SafeBuffer. Ich habe das Problem damals untersucht, bin aber zu keinem Ergebnis gekommen. Es kann sein, dass es noch weitere Code-Stellen gibt (mit Fiona Connector zusammenhängend), die ActiveSupport::SafeBuffer nicht vertragen.

@ronaldmueller
Copy link
Author

ronaldmueller commented Feb 7, 2018

Danke @tprzedmojski . Ich hoffe, es geht dir gut und du hast Spaß bei deiner neuen Arbeit. Oder bist zumindest nicht gelangweilt ;)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants