パンくずリストのGemをBreadcrumbsOnRailsからBuoysに変更しました。

どうも迷い家の白猫のシロです。

最近、東方編曲録のパンくずリストのリプレースを行いました。 ※ただし、まだ本番サーバーには反映されていません。

もともと、breadcrumbs_on_railsを使って実装していたのですが、 コードの記述が冗長で、controllerの責務じゃないし、controllerのコードを減らしたいと思い、置き換えしたいなと思いました。 初めは、gretelを考えたのですが、 あまりI18nに関する情報がなかったので、保留にしていました。

以下のプレゼン資料をお見かけして、「I18nも使える!良し、Buoysに置き換えよう!」と決心しました。

www.slideshare.net

github.com

環境

以下が置き換えたときの手順です。

手順1. Gemfile に追加し、 bunlde install

  • Gemfile
+ gem 'buoys'
$ bundle install

手順2. Buoysのインストールを実行

  • hamlを使用しているのでテンプレートを haml を指定してインストールする。
$ bin/rails g buoys:install --template haml
      create  config/locales/buoys.en.yml
      create  config/buoys/breadcrumbs.rb
      create  app/views/breadcrumbs/_buoys.html.haml

手順3. i18nの日本語を作成

$ cp -rp config/locales/buoys.en.yml config/locales/buoys.ja.yml
  • buoys.ja.yml
- en:
+ ja:

手順4. 既存のパンくずリストの下に、buoysの部分テンプレートを追加

  • app/views/layouts/application.html.haml
         = render_breadcrumbs builder: ::CustomBreadcrumbsBuilder
+        = render partial: 'breadcrumbs/buoys'

手順5. config/buoys/breadcrumbs.rbとi18nをごりごり書いていく

Gretelを使用していたら、crumb do ... endbuoy do ... endに変更するだけで良かったんですが、 readcrumbs_on_railsを使用していたので、一から作り直しです!

既存のパンくずリストと同じ動きをするように作成していきます。 これが時間かかりました。。。

手順6. Gemfileから gem 'breadcrumbs_on_rails' を削除し、bundle install

  • Gemfile
- gem 'breadcrumbs_on_rails'
$ bundle install

手順7. 既存のパンくずリストの部分テンプレートを削除

$ rm app/views/shared/_breadcrumbs.html.haml

手順8. 独自ライブラリを削除

$ rm lib/custom_breadcrumbs_builder.rb

手順9. 既存のrender処理を削除

  • app/views/layouts/application.html.haml
-        = render_breadcrumbs builder: ::CustomBreadcrumbsBuilder

大変でしたが、無事にBuoysに置き換えることができました^^

touhou.arrangement-chronicle.com