Ruby on Railsのgem「Rinku」を使ってhttpで始まる文字に自動でaタグリンクを付ける方法

よこのじ(@yokonoji_work)です。

Ruby on Railsで「http~」「https~」のような文字で始まるURLを投稿したときに、自動でaタグのリンクにしたかったので調べてみました。

これを行ってくれる「Rinku」というgemがありましたので、ご紹介します。

gem Rinku が自動でURLをリンクにしてくれる

Rinkuは簡単にURLをリンクに変換してくれるRuby on Railsのgemです。

GitHubに書かれている説明によると、C言語で書かれているのでRuby on Railsのauto_linkメソッドよりも20倍速く、正規表現により置換よりも20倍スマートとのことです。

it’s about 20 times faster, because it’s written in C, and it’s about 20 times smarter when linking, because it does actual parsing instead of RegEx replacements.

RinkuをRuby on Railsで使う

Rinkuを使うのは簡単です。

まず、Gemfileに rinku を追加します。

gem 'rinku'

追加したら、bundle install してください。

あとは、次のようにリンクに変換する対象となるURLを当てはめるだけです。

raw Rinku.auto_link("https://yokonoji.work/", :all, 'target="_blank"')

URLの部分は変数で記述することも可能です。その場合、ただの文字列であればリンクに変換される出力されるだけです。

また、:all の部分は変換対象の指定となっています。

Rinkuは「http://」「https://」「ftp://」「mailto://」で始まるテキストをリンクに変換してくれるのですが、:urls か :email_addresses を指定することで対象を絞り込むこともできます。

Rinkuの実例

Todoを投稿するようなアプリケーションで、Rinkuを導入してみました。

URLを含んだり、含まなかったりする投稿の一覧を表示する部分でRinkuを使うための記述をしています。

<% @todos.each do |t| %>
・・・
  <%= raw Rinku.auto_link(t.todo, :all, 'target="_blank"') %>
・・・

この表示結果は、次のようになります。

https://~で始まればリンクに変換されていますし、URLが途中に記述されていてもちゃんとリンクになります。

gem Rinkuの使い方

 

テキストの表示部分の記述をRinku用に少し変更するだけで、URLを自動で変換できるgem「Rinku」の紹介でした。ぜひ使ってみてください。