テキストのURLを<a>タグに適応させるgem「Rinku」(Rails)

f:id:ryoutaku_jo:20190706171040p:plain

【結論】

・テキスト中のURL部分だけに自動でリンクを適用させて表示させたい時に有用なのがRinkuというgem

RinkuはコードがCで記述されており、RegExの置き換えではなく実際の解析を行うため、実行が約20倍高速

自動リンクする対象を指定したり、外部リンクで開く様にするなどオプションの設定も可能

【目次】

【本題】

テキスト中のURLにリンクを自動適用させたいケース

通常、URLをテキストとしてビューに表示させた場合、リンクは生成されず、クリックしても何も反応がありません。

だからと言って、aタグつきで入力したとしても、そのままHTMLタグも含めたテキストが表示されるだけです。

ユーザーが任意で入力したテキスト中のURL部分だけに自動でリンクを適用させて表示させたい場合に有用なのがRinkuというgemです。

自動でURLリンクを生成するgemRinkuについて

Rinku自動リンクを行うRubyライブラリです。

github.com

Railsには同じ機能を持ったauto_linkメソッドが存在しますが、RinkuはコードがCで記述されており、RegExの置き換えではなく実際の解析を行うため、実行が約20倍高速というメリットがあります。

使用方法

Gemfileに以下を追記して、bundle installします。

gem 'rinku'

後はリンクを適用させたいテキストにRinku.auto_linkメソッドを呼び出すだけです。

Rinku.auto_link(text)

既にタグで囲まれているリンクはスキップします。

なお、このままだとtextにスクリプトインジェクションを仕込まれる恐れがあるのでt()でエスケープさせる必要があります。

その上で、rawで自動エスケープせずに出力させます。

= raw Rinku.auto_link(h(text))

その他

自動リンクが適用されるのは、以下のプロトコルだけです。

http:// https:// ftp:// mailto://

電子メールアドレスもデフォルトで自動リンクされます。プロトコル指定子がなく、'www.'で始まるURLも自動リンクされ、デフォルトで'http://'プロトコルになります。

自動リンクするリンクの種類は、:all:urls:email_addressesから指定できます。

また、'target="_blank"'を設定することで、外部リンクで開く様に設定も可能です。

auto_link('http://www.pokemon.com', :all, 'target="_blank"')

参考情報

GitHub - vmg/rinku: Autolinking. Ruby. Yes, that's pretty much it.

【Rails】Rinkuを使い、URLを検出して&lt;a&gt;タグを自動的に適応させる方法 - Qiita

【Ruby】テキスト内のURLを自動でリンクにしてくれるgem rinkuの導入と使い方【auto_linkの20倍早い】 - Qiita

【Rails開発メモ】URLテキストにaタグリンクを自動でつける方法 | FREE SWORDER

《今日の学習進捗(3年以内に10000時間に向けて)》

本日初めてクライアントへの訪問に同行させて頂いたが、相手側にベテランのエンジニアがいるとかなり緊張してしまう・・・

エンジニアとして最低限の知識が身に付いているとは言い難いレベルなので、先方が当たり前だと思っている事を理解できず、頼り無い印象を持たれてしまうのでは無いかと考えてしまう。

実際にパスワードポリシーに関して言及されたが、上手く返すことが出来なかった・・・

ここについては、コンピュータサイエンスなどWEBサービスを作る上で必要な知識を地道に取り入れていって対処していきたい。

但し、最重要なのはサービスの仕様を正確に把握し、それらに関して受け答えが出来ることだと考えているので、まずは自分が開発しているプロダクトの要件を熟知するところから始めたい。

学習開始からの期間 :210日
今日までの合計時間:2041h
一日あたりの平均学習時間:9.8h
今日までに到達すべき目標時間:1918h
目標との解離:123h
「10,000時間」まで、

残り・・・「7959時間!」