Webuilder240

このブログにリンク埋め込み機能を作った

2020-10-04 21:00:23 +0900

Ruby ActionText Rails
ざっくり言うと、リンクのTwitterカードみたいなやつを記事中に埋め込めるようにした。
こんな感じの奴ですね。



利用した技術

この記事で、ActionTextを使ってTwitterのツイートの埋め込みだったり、Youtube動画の埋め込みをできるようにしたのですが、その応用です。今回も同じようにActionText::Attachableを利用して実装しました。
実装内容はこのOEmbedのリソースの取得が、指定したURLのHHTMLからOGP情報を取得に置き換わりHTMLの内容が変更されたくらいです。



ActionText::Attachableを利用して実現する場合のメリット・デメリット


Railsの機能を使っているので、実装が簡単なことがメリットです。
RailsやTrix(ActionTextで使っているテキストエディタ)に依存してしまうのではないか?というデメリットはあるにはありますが、仕組みさえ理解すれば問題にはならないはずです。Trixには依存しないようにできていると思います。
これは良しあしの問題ですが、
ActionText::Attachableを使っての埋め込みは、何も考えないで実装すると、「添付されたActionText::Attachableの数だけ」SQLリクエストが参照時に行われます。
極端な例を出しますが、今回のTwitterカードだったりの埋め込みが合計100個存在する場合は、100回のSQLリクエストが行われることになります。
リンクの埋め込みが少ない場合には特に問題になりませんが、
しかし本文を表示する時に、モデルを取得してHTMLをerbでレンダリングしているので、埋め込みしているHTMLのデザインや内容の変更が容易であるとも言い換えることができます。

雑感



うーん、ほかの人より少しは詳しく知ってるのでもうちょっとチュートリアル形式で発信しようかな、と思っている...

関連しそうなブログ