ざっくり言うと、リンクのTwitterカードみたいなやつを記事中に埋め込めるようにした。
こんな感じの奴ですね。
こんな感じの奴ですね。
Webuilder240.com
Ruby on Railsでの開発をメインにしているサーバーサイドエンジニアのポートフォリオサイトです。
利用した技術
この記事で、ActionTextを使ってTwitterのツイートの埋め込みだったり、Youtube動画の埋め込みをできるようにしたのですが、その応用です。今回も同じようにActionText::Attachableを利用して実装しました。
実装内容はこのOEmbedのリソースの取得が、指定したURLのHHTMLからOGP情報を取得に置き換わりHTMLの内容が変更されたくらいです。
実装内容はこのOEmbedのリソースの取得が、指定したURLのHHTMLからOGP情報を取得に置き換わりHTMLの内容が変更されたくらいです。
ActionTextでTwitterやYoutubeの埋め込みに対応した
ActionTextをRails6がリリースされた瞬間だけつかって満足しているRailsエンジニアの皆様こんにちは。このブログではActionTextをしっかりと使っています。そこでOEmbedを使った、各種WebサービスのHT...
ActionText::Attachableを利用して実現する場合のメリット・デメリット
Railsの機能を使っているので、実装が簡単なことがメリットです。
RailsやTrix(ActionTextで使っているテキストエディタ)に依存してしまうのではないか?というデメリットはあるにはありますが、仕組みさえ理解すれば問題にはならないはずです。Trixには依存しないようにできていると思います。
これは良しあしの問題ですが、
ActionText::Attachableを使っての埋め込みは、何も考えないで実装すると、「添付されたActionText::Attachableの数だけ」SQLリクエストが参照時に行われます。
極端な例を出しますが、今回のTwitterカードだったりの埋め込みが合計100個存在する場合は、100回のSQLリクエストが行われることになります。
リンクの埋め込みが少ない場合には特に問題になりませんが、
しかし本文を表示する時に、モデルを取得してHTMLをerbでレンダリングしているので、埋め込みしているHTMLのデザインや内容の変更が容易であるとも言い換えることができます。
ActionText::Attachableを使っての埋め込みは、何も考えないで実装すると、「添付されたActionText::Attachableの数だけ」SQLリクエストが参照時に行われます。
極端な例を出しますが、今回のTwitterカードだったりの埋め込みが合計100個存在する場合は、100回のSQLリクエストが行われることになります。
リンクの埋め込みが少ない場合には特に問題になりませんが、
しかし本文を表示する時に、モデルを取得してHTMLをerbでレンダリングしているので、埋め込みしているHTMLのデザインや内容の変更が容易であるとも言い換えることができます。
雑感
ActionTextというか、
— |c||❛.ᴗ❛|| にっく (@webuilder240) October 4, 2020
ActionText::Attachableのすばらしさを理解して情報発信しているのは俺だけか??と思うことがある。
特定機能に対してすごい便利だし、
直接使わないにしても、簡単な仕組みを知っているだけでも、設計の幅が広がるというか、かなり多くの発見があったのでおすすめですね。
うーん、ほかの人より少しは詳しく知ってるのでもうちょっとチュートリアル形式で発信しようかな、と思っている...