Open4

RailsのAPI指定した場合としなかった場合の差分(v7.1.3.2)

NaityaNaitya

大きくはviewの有無なんだろうとは思うけど、そんなにちゃんと見たことなかったのでちょっと見てみる。
とはいえ、一つ一つ細かく見ていくと大変そうなので気になる部分を抜き出していく。

概要を知りたいという方はこんなところより以下を参照頂くと良いです。
https://railsguides.jp/api_app.html

NaityaNaitya

比較対象のプロジェクト生成コマンド

下記のコマンドで生成したプロジェクトを比較する。
※DBは個人的に使うことが多いpostgresqlを指定

# 通常版
$ rails new [プロジェクト名] -d postgresql

# API版
$ rails new [プロジェクト名] --api -d postgresql

以降、プロジェクト名は通常版をBase、API版をAPIとする。

NaityaNaitya

プロジェクトサイズ

まずはプロジェクトサイズから比較したところ、以下の結果になった。

$ du -ks *
260     API
12464   Base

それなりに差が出るとは思っていたが、2桁も変わるとは・・・
と、思って少しだけ追っていったところ、差分はほぼtmp(≒bootsnapのキャッシュ)が大半を占めていた。
※APIはtmpに

$ du -ks Base/tmp/*      
12132   Base/tmp/cache
4       Base/tmp/local_secret.txt
0       Base/tmp/pids
0       Base/tmp/storage

$ du -ks Base/tmp/cache/*
0       Base/tmp/cache/assets
12132   Base/tmp/cache/bootsnap

ということで、tmpを除いた場合は以下。
思ったよりは差がなかった。

# 単位はKB
260     API
328   Base
NaityaNaitya

Gemfile

共通で記述されているものは割愛。

# APIのみ
gem "rack-cors" # デフォルトではコメントアウトされている

# Baseのみ
gem "sprockets-rails"
gem "importmap-rails"
gem "turbo-rails"
gem "stimulus-rails"
gem "jbuilder"
gem "web-console" # development group
gem "capybara" # test group
gem "selenium-webdriver" # test group

各Gemの簡単な説明を追記していきたいとは思っている。