[Rails5] Active Supportの概要をつかむ

こんにちは、hachi8833です。 今回は、Rails 5の広大なActive Support世界のおおまかな地図を知るための記事です。[Rails5] Railsの主要なライブラリ構成を先にご覧ください。 以下、特記ない限りRails 5を対象とします。 Active Supportとは Active Supportの位置づけ Active Supportは、数値や日付や文字列などさまざまなライブラリの集まりです。Railsの広い範囲で共有されている重要なものもあれば、ちょっとした便利メソッド的なものもあります。こうした区分はよくmisc(miscellaneous)と名付けられますが、Railsではおそらく命名統一のためにあえて「Active Support」と呼んでいるのでしょう。 その中でCore Extensions(コア拡張機能)と呼ばれるものの多くは、Railsで使うためにRubyの標準ライブラリに含まれるクラスを拡張しています。 その他に、Active Recordほど大きくないもの、たとえば国際化(i18n)のライブラリもActive Supportに置かれています。 Active SupportはRails開発者が直接呼び出すこともあれば、Railsの他のライブラリで使われることもあります。 また、Rails以外のソフトウェアでも使いたくなるようなメソッドも多数見当たります。そのためか、最近Active SupportのメソッドがRubyの標準ライブラリに昇格する例をちょくちょく見かけます(参考: Enumerable#sum)。 Rails以外でActive Supportを使う 実際、たまにRailsを離れて純粋なRubyプログラムやpryを触っていると、欲しいメソッドがActive Supportにしかないことに気付いてrequire ‘active_support/core_ext/object/blank’などと追加することがよくあります。 そこそこ大きなRubyプログラムを書くなら、使いもしないライブラリは読み込まないようにしましょう。require ‘active_support/core_ext/object/blank’のように個別に指定すれば、Active Supportの他のライブラリは読み込まれません。 逆に、pryでちょっと使う程度なら特定のActive Supportをちまちま指定するより全部まとめてrequireする方が楽です。 Active Supportの機能の中にはauto_loadされるものも多いので、/allを指定してもその場でメモリにすべて読み込まれるのではなく、多くは使うときにはじめて読み込まれます。パフォーマンスチューニング中でもなければメモリを気にすることはそれほどないかもしれません。 ただし、Active Supportをすべてrequireする場合は、以下のように/allを付ける必要があります。 require ‘active_support/all’ # OK つい忘れがちですが、以下のように指定しても何も読み込まれません。 require ‘active_support’ # NG Active Supportの構成 Rails APIサイトで現時点のActive Supportの全ファイルを表示してみると、ファイルだけでかなりの数にのぼります。 とにかく広大かつ膨大です。これをいきなり把握するのは大変なので、全体像をつかむ手がかりを見つけましょう。Active Supportを大きく分けると、コア拡張機能とそれ以外のライブラリがあります。 分類 … Continue reading [Rails5] Active Supportの概要をつかむ