[Ruby] module_functionでモジュールの特異メソッドを簡潔に書く

こんにちは、hachi8833です。先日の記事「[Rails5] Active Support Core ExtensionsのStringクラス(2)html_safe」を書いていて見つけた、module_functionの使い方を別記事にいたしました。 条件 Rubyバージョン: 2.3.3 Railsバージョン: 5-0-stable のActive Support モジュールでのメソッド定義とmodule_function Active SupportのERBクラス内にUtilモジュールが定義されており、Ruby標準のERBライブラリをオーバーライドします。 ERBクラスはざっくり以下のような構成になっています。 # ERBクラスの構成 class ERB module Util def メソッド1 … end module_function :メソッド1 def メソッド2 … end module_function :メソッド2 … end end 上のように、Utilモジュールでは、module_functionメソッドが多用されています。たとえば以下のように、各モジュールのメソッド定義後にmodule_functionが呼び出されています。 # A utility method for escaping HTML without affecting existing escaped entities. # … def html_escape_once(s) result … Continue reading [Ruby] module_functionでモジュールの特異メソッドを簡潔に書く