Rails アプリケーションに型付けを進める中で、同僚と話題になった concern の扱いについて紹介します。 ご存知の通り、concern は「関心事を分離したもの」とよく紹介されるモジュールで、モデルや Controller などで include して使う共通モジュールです。 この concern に対して型付けをしようとしても、うまく行かないね、というのが今回の話の発端です。 話をイメージしやすいよう、ログイン状態をチェックする Loginable という concern をサンプルとして用意してみました。 module Loginable def require_logged_in redirect_to login_path if session[:user_id].blank? end def login(user) session[:user_id] = user.id