こんにちは、hachi8833です。今回はRails 5の主要なライブラリ構成について書いてみたいと思います。
Railsの主要なライブラリ構成
- 対象バージョン: 特記しない限りRails 5とします。
Railsは多数のライブラリから構成されている
Ruby on Railsは、Active RecordやAction View、Action Controllerといったさまざまな巨大ライブラリが多数組み合わさってできています。
主なライブラリ | 主な機能 |
---|---|
Active Record | データベースのモデル、モデル内データへのアクセス、モデル間のリレーション、バリデーションなど |
Active Model | データベースを使わないモデルの作成など |
Action View | ビューでのERB出力(レンダリング)など |
Action Controller | ルーティングをコントローラに渡す、コントローラとモデルやビューを結びつけるなど |
Action Mailer | オプションのメール送受信 |
Active Job | ジョブ管理、他のジョブフレームワークとの仲介 |
Active Support | 「コア拡張機能」を中心とする文字列や日付時刻などの膨大なメソッド集 |
なお、Action PackはRails 2まではAction ControllerとAction Viewを含んでいましたが、現在Action ViewはAction Packから分離されました。ルーティングなどを担当するAction DispatchもAction Packに含まれます。
Railsを実行するとこれらのライブラリが自動で読み込まれるので、普段は読み込みについて特に意識することはないと思います。
そうしたライブラリの多くは実はRails専用というわけではなく、Rails以外のRubyプログラムで使っても構いません。実際、これらのライブラリの一部はSinatraなど他のRubyフレームワークでもよく使われています。
Railsではライブラリをgemとして持つ
Railsでは、多くの機能をライブラリとして持っています。
そしてライブラリはRubyのgemという形式で扱い、bundlerで統一して管理されます。
- Railsの歴史では、当初は本体の機能だったものが後にgem化されることがよくあります。たとえば最近では、Active SupportのEnumerable#sumがRuby標準ライブラリに移行しました。
- また、特定の機能を非推奨(deprecated)にする場合も、いったんgem化してリリースし、次のバージョンでgemを外す、といった方法で行うことがよくあるようです。
追記: 「プラグイン」という呼び方
少々ややこしいのですが、Railsを拡張するライブラリは正式にはプラグインと呼ばれます。
ここ数年の記事では、Railsを拡張するライブラリは単にライブラリまたはgemと呼ばれることが多く、「プラグイン」という呼び方はあまりされていないようです。
体験したことはありませんが、Rails 1や2の時代は、プラグインをgemまたは「pluginスクリプト」としてインストールしていたそうです。現在のRailsではプラグインをgemのみを使うインストールに統一されています。
今後
Rails 5の主要ライブラリのうち、Active Supportについて順次探訪してみようと思います。ご期待ください。