一つのアプリケーション開発でも機能を gem に分けて分割統治すると具合がよい
コツは同じリポジトリかローカルパスが通る状態でやること。あと vendor
とかにダウンロードする方式にしないこと。
gem 'module_a', path: '../module_a'
gem 'module_b', path: '../module_b'
rails s
でのサーバーへの反映 (つまりブラウザでクリッククリックして動作確認しているような場合) は再起動が必要で少し手間です。しかし rspec など自動テストにおいては都度 gem が読みこみなおされるため、あらためて何かをする必要はありません。
メリット
各 gem のテストが早い。
特に Rails を基本としたアプリケーションの場合、ちょっとしたテストでも起動に時間がかかるため、テストはミリ秒で終わるのに起動に数秒かかってしまうということがあります。
gem に切りだしておくと、Rails 特有の機能が必要ない場合とても早く起動し、早く終わります。便利ですね。
まじらない
ドメインが強く分離されるため、変な依存関係や結合が起こりません。平和ですね。