enum-i18nの話し

この記事はみんなのウェディング Advent Calendar 2017 - Qiita 22日目の記事です。

dotenv+itamae環境をconfig+yaml_vaultに移行した話 - amyroi's logの記事に引き続き@amyroiが担当します。

enum-i18n

Rails4のEnumI18nに対応するイケているgemがなかったので 簡単に作ったものを後日gemにしました。 こちらについて書いていこうと思います。

https://rubygems.org/gems/enum-i18n

以前HatenaBlogの記事で簡単な紹介をしました。 amyroi.hateblo.jp

みんなのウェディングではこのgemを使っていません!

  • 社内ではモンキーパッチとしてリポジトリ内に配置しています。

作った背景

  • プロジェクト内のI18nの構成を綺麗にした。
  • models, viewsで綺麗な構成になったけどenumカラムに対応させてない。
  • enumerizeみたいにRailsEnumも対応させたい! https://github.com/brainspec/enumerize
  • Rails本体にはいつから対応するのかな。まだされない。。

なぜ社内で使えないのか

https://github.com/amyroi/enum-i18n/blob/master/lib/enum-i18n.rb#L10

ライブラリ内部でActiveModel::Name#model_nameメソッドを呼んでいます。

name = model_name.try(:i18n_key).to_s

しかし弊社ではmodel_nameというカラムがschemaに存在します。 そのため、特定のテーブルに対するロジックを書く必要があり、 モンキーパッチとして置くことになりました。

name = (self.class == ::User) ? 'user' : model_name.try(:i18n_key).to_s

残念!

gemにした理由

とても個人的な理由で作りました。

  1. 2017年の抱負を決めずに過ごしてきたので年内に何か残したかったから。
  2. gitのsubmoduleでライブラリを作った記憶はあるけどOSS化はしていなかった。
  3. フリーランスで活動する上でOSS活動について聞かれる事が増えてきたから。

増やしたいメソッド

  • enumカラムの翻訳対応された一覧を取得できるoptionsを追加していきたい。

Contributing

PR送ってくれたら喜びます。

明日のAdvent Calendarは?

みんなのウェディング Advent Calendar 2017 23日目は@matsuhisa_h さんの記事です。