Everlasting 0.1.0 をリリースした

Rails 5 で ActionController::Parameters が Hash (ActiveSupport::HashWithIndifferentAccess) を継承しなくなったことで作った Gem となる。

github.com

Rails 4 系から Rails 5 系にアップグレードしたアプリケーションで、AC::Parameters に対して Hash のメソッド呼び出しをしているコードが残っている可能性がある場合を想定している。

自動テスト、手動テストなどで見つかったものは良いが、本番環境まで見逃してエラーが発生するとたいへん悲しい気持ちになる。そこでこの Gem では従来のように Hash のメソッド呼び出しがあった場合には、その処理を続行しつつエラーログを出力するようになる。アプリケーションとしてエラーになることなくなるので、裏でログ検知の仕組みを入れて未対応分のコードを直す土台にするといった使われ方を想定している。

Rails プラギンとしていて Gemfile に gem "everlasting" として bundle install すれば、いまのところ特に設定は不要。ログは error レベルで出すようにしている。

裏側の実装としては、AC::Parameters に method_missing を定義して、Hash が respond_to? で対応できるメソッドの呼び出しであれば to_h して send とロギングをするといったシンプルなものになる。

本質的には望んで使いたい Gem ではないので、一定期間の導入で問題となるログがなければ外すと良い。

Gem の名前は当初 hashnize_parameters などといった名前を考えていたりして悩んでいたが、ちょうどオフィスに向かう電車で聴いていた楽曲の曲名が『EVERLASTING』だったのでそこから拝借したのと、エラーで終わるなることなく続いていくということから命名した。Gem 名はモジュールの名前空間になったりするのでワンワードが好ましいと思っていることも決定の理由だけれど、名付け難しい。

ONE FOR ALL-ALL FOR ONE

ONE FOR ALL-ALL FOR ONE