いわゆるパンくずリストの実現をサポートする Gem の置き換えの話。
同僚の muryoimpl が Buoys という Gem を開発したので、もともと Gretel という Gem を使っていたところをそちらに置き換えた (作者プレゼンによると I18n も使える) 。
Buoys では Gretel への互換インターフェイス (エイリアスメソッド) が用意されてるくらいに Gretel を意識されいて割りと置き換えは楽だった。
Rails アプリケーションでの実際の置き換えを行なった際のざっくりした手順を次に記す。
手順1. Gemfile を書き換えて bunlde install
Gemfile の gem 'gretel'
を gem 'buoys'
に置き換える。
- gem 'gretel' + gem 'buoys'
bundle install する。
% bundle install
手順2. 各種ファイル名を変える
パンくず表示となるパーシャルのファイル名を変更する。
% mv ./app/views/application/_breadcrumb.html.haml ./app/views/application/_buoy.html.haml
パン屑の設定ファイルを配置するディレクトリ名を変更する。
% mv ./config/breadcrumbs ./config/buoys
手順3. コードのテキスト置換をする。
config/buoys の crumb do ... end
を buoy do ... end
にした。このあたり、Gretel 互換の crumb
メソッドというエイリアスが用意されているが、ものはついでなので buoy
メソッドに変えておく。
このあたり CSS のクラス名なんかの当該箇所もあわせて文字列置換をしたかったので、ざっくりと自前で作った replace_text というシェルを使って行なった (ざっくり過ぎて使い方のサンプルすらない!) 。ディレクトリ配下にある文字列の一括置換を行なうので git 管理しているディレクトリでの実行を強く推奨する。
% replace_text breadcrumb buoy
ここまでの buoys への置き換えでだいたい動くと思われるが、RailsAdmin を使っている場合は少しだけ注意点がある。
おまけ. RailsAdmin を使っている場合
上記の手順3で文字列を一括置換した際に、RailsAdmin の breadcrumb
メソッドまで buoys
という文字列に置き換えている可能性がある。
そういったことのないように、RailsAdmin をエンハンスしているアプリケーションコード中にある breadcrumb
メソッドに対しては buoys
に文字列置換せず、そのままにしておく。
また、rails_admin.ja.yml などの I18n についても同様のことが言える、パンくずの位置に Translation missing
が出ていれば YAML のキーを breadcrumb
のままにしておく必要がある。
いまある知見はだいたいこんなところ。