きっかけは mastodon の URL 貼り付けを確認してたときにびろーんと伸びてしまうのに気づいたこと。
引用ここまで。めっちゃ改行入れてるわけじゃなくて、ここまでびろーんって伸びちゃってるんです。
逆に、長いトゥートは途切れてしまう。
なぜこうなるか mastodon のコードを追ってみた。対象はタグ v1.3.2 のもの。
oEmbed の実装は oembed_controller.rb にあって、特別な指定がなければ height が 640 となる。
def show @stream_entry = stream_entry_from_url(params[:url]) @width = params[:maxwidth].present? ? params[:maxwidth].to_i : 400 @height = params[:maxheight].present? ? params[:maxheight].to_i : 600 end
https://github.com/tootsuite/mastodon/blob/v1.3.2/app/controllers/api/oembed_controller.rb#L9
height というのは oEmbed の仕様にあって rich タイプでは必須となっている。
height (required)
The height in pixels required to display the HTML.
この高さが 640 と固定されているので、びろーんと伸びてしまったり、途切れてしまったりするわけだ。
Twitter がどうしているか調べてみたら、height には null が入っていた。instagram も同様に null だった。
じゃぁ mastodon でも null 返せばいいのか?ってことで、自分の mastodon インスタンスで show メソッドを書き換えて null になるようにしたら、いい感じにフィットするようになった。
なるにはなったけど required って明記されているものに対して null を返すのはちょっと抵抗あるなー。本家に PR 出しても苦い顔されそうだし、自分がその立場なら苦い顔しそう。
なお今回の調査では iframely のデバッガにとてもお世話になりました。
(5/9 追記) 出すだけ出してみようってことで PR 出したらすぐマージされましたとさ。ウワサには聞いてたけど対応速かった!