Rails new app, options (v7)

December 17, 2021

Rails new するときのオプションについて調べました(Version 7)。

$ rails -v
Rails 7.0.0

利用可能なオプションリスト

使用可能なすべてのオプションを一覧表示するには、 rails new -helpを実行します。 執筆時点(Rails 7.0.0)では、次のように出力されます。

$ rails new --help
Usage:
  rails new APP_PATH [options]

Options:
      [--skip-namespace], [--no-skip-namespace]              # Skip namespace (affects only isolated engines)
      [--skip-collision-check], [--no-skip-collision-check]  # Skip collision check
  -r, [--ruby=PATH]                                          # Path to the Ruby binary of your choice
                                                             # Default: /Users/akito/.rbenv/versions/2.7.5/bin/ruby
  -m, [--template=TEMPLATE]                                  # Path to some application template (can be a filesystem path or URL)
  -d, [--database=DATABASE]                                  # Preconfigure for selected database (options: mysql/postgresql/sqlite3/oracle/sqlserver/jdbcmysql/jdbcsqlite3/jdbcpostgresql/jdbc)
                                                             # Default: sqlite3
  -G, [--skip-git], [--no-skip-git]                          # Skip .gitignore file
      [--skip-keeps], [--no-skip-keeps]                      # Skip source control .keep files
  -M, [--skip-action-mailer], [--no-skip-action-mailer]      # Skip Action Mailer files
      [--skip-action-mailbox], [--no-skip-action-mailbox]    # Skip Action Mailbox gem
      [--skip-action-text], [--no-skip-action-text]          # Skip Action Text gem
  -O, [--skip-active-record], [--no-skip-active-record]      # Skip Active Record files
      [--skip-active-job], [--no-skip-active-job]            # Skip Active Job
      [--skip-active-storage], [--no-skip-active-storage]    # Skip Active Storage files
  -C, [--skip-action-cable], [--no-skip-action-cable]        # Skip Action Cable files
  -A, [--skip-asset-pipeline], [--no-skip-asset-pipeline]    # Indicates when to generate skip asset pipeline
  -a, [--asset-pipeline=ASSET_PIPELINE]                      # Choose your asset pipeline [options: sprockets (default), propshaft]
                                                             # Default: sprockets
  -J, [--skip-javascript], [--no-skip-javascript]            # Skip JavaScript files
      [--skip-hotwire], [--no-skip-hotwire]                  # Skip Hotwire integration
      [--skip-jbuilder], [--no-skip-jbuilder]                # Skip jbuilder gem
  -T, [--skip-test], [--no-skip-test]                        # Skip test files
      [--skip-system-test], [--no-skip-system-test]          # Skip system test files
      [--skip-bootsnap], [--no-skip-bootsnap]                # Skip bootsnap gem
      [--dev], [--no-dev]                                    # Set up the application with Gemfile pointing to your Rails checkout
      [--edge], [--no-edge]                                  # Set up the application with Gemfile pointing to Rails repository
  --master, [--main], [--no-main]                            # Set up the application with Gemfile pointing to Rails repository main branch
      [--rc=RC]                                              # Path to file containing extra configuration options for rails command
      [--no-rc], [--no-no-rc]                                # Skip loading of extra configuration options from .railsrc file
      [--api], [--no-api]                                    # Preconfigure smaller stack for API only apps
      [--minimal], [--no-minimal]                            # Preconfigure a minimal rails app
  -j, [--javascript=JAVASCRIPT]                              # Choose JavaScript approach [options: importmap (default), webpack, esbuild, rollup]
                                                             # Default: importmap
  -c, [--css=CSS]                                            # Choose CSS processor [options: tailwind, bootstrap, bulma, postcss, sass... check https://github.com/rails/cssbundling-rails]
  -B, [--skip-bundle], [--no-skip-bundle]                    # Don't run bundle install

Runtime options:
  -f, [--force]                    # Overwrite files that already exist
  -p, [--pretend], [--no-pretend]  # Run but do not make any changes
  -q, [--quiet], [--no-quiet]      # Suppress status output
  -s, [--skip], [--no-skip]        # Skip files that already exist

Rails options:
  -h, [--help], [--no-help]        # Show this help message and quit
  -v, [--version], [--no-version]  # Show Rails version number and quit

Description:
    The 'rails new' command creates a new Rails application with a default
    directory structure and configuration at the path you specify.

    You can specify extra command-line arguments to be used every time
    'rails new' runs in the .railsrc configuration file in your home directory,
    or in $XDG_CONFIG_HOME/rails/railsrc if XDG_CONFIG_HOME is set.

    Note that the arguments specified in the .railsrc file don't affect the
    defaults values shown above in this help message.

Example:
    rails new ~/Code/Ruby/weblog

    This generates a skeletal Rails installation in ~/Code/Ruby/weblog.

よく利用するオプション

-d, [--database=DATABASE]

データベースを指定するオプション。Default は sqlite3 です。データベースは mysql, postgresql, sqlite3, oracle, sqlserver, jdbcmysql, jdbcsqlite3, jdbcpostgresql, jdbcから選択できます。

$ rails new . --database==postgresql

-T, [--skip-test]

テスト関連ファイルを生成しないようにします。

$ rails new . --skip-test

Gemfile に以下が追加されなくなります。

Gemfile
group :test do
  # Use system testing [https://guides.rubyonrails.org/testing.html#system-testing]
  gem "capybara"
  gem "selenium-webdriver"
  gem "webdrivers"
end

-J, [--skip-javascript]

--skip-javascriptオプションを利用すると以下の Gem がインストールされなくなります。

gem "importmap-rails" # Use JavaScript with ESM import maps [https://github.com/rails/importmap-rails]
gem "turbo-rails" # Hotwire's SPA-like page accelerator [https://turbo.hotwired.dev]
gem "stimulus-rails" # Hotwire's modest JavaScript framework [https://stimulus.hotwired.dev]
$ rails new . --skip-javascript

--skip-hotwire

--skip-hotwireオプションを利用すると以下の Gem がインストールされなくなります。

gem "turbo-rails" # Hotwire's SPA-like page accelerator [https://turbo.hotwired.dev]
gem "stimulus-rails" # Hotwire's modest JavaScript framework [https://stimulus.hotwired.dev]
$ rails new . --skip-hotwire

--skip-asset-pipeline

--skip-asset-pipelineオプションを利用すると以下の Gem がインストールされなくなります。

# The original asset pipeline for Rails [https://github.com/rails/sprockets-rails]
gem "sprockets-rails"

また、asset pipeline 関連ファイルが作成されなくなります。

$ rails new . --skip-asset-pipeline

-j, [--javascript=JAVASCRIPT]

JavaScript のアプローチを選択できます。デフォルトはimportmapです。 webpack, esbuild, rollupから選択できます。

$ rails new . --javascript=esbuild

-c, [--css=CSS]

CSS プロセッサーを選択できます。tailwind, bootstrap, bulma, postcss, sassから選択できます。

$ rails new --css=tailwind

上記のコマンドで以下が追加されます。

Gemfile
# Use Tailwind CSS [https://github.com/rails/tailwindcss-rails]
gem "tailwindcss-rails"

-B, [--skip-bundle]

Rails アプリ作成後 Bundle Install を走らせないようにします。

$ rails new --skip-bundle

--api

Rails による API 専用アプリケーション を作成する場合に利用します。

--minimal

ミニマム構成の Rails App を作成するときに利用します。

$ rails new . --minimal

以下の Gem がインストールされなくなります。

Gemfile
gem "importmap-rails" # Use JavaScript with ESM import maps [https://github.com/rails/importmap-rails]
gem "turbo-rails" # Hotwire's SPA-like page accelerator [https://turbo.hotwired.dev]
gem "stimulus-rails" # Hotwire's modest JavaScript framework [https://stimulus.hotwired.dev]
gem "jbuilder" # Build JSON APIs with ease [https://github.com/rails/jbuilder]
gem "bootsnap", require: false # Reduces boot times through caching; required in config/boot.rb
gem "web-console" # Use console on exceptions pages [https://github.com/rails/web-console]
gem "capybara"
gem "selenium-webdriver"
gem "webdrivers"

また、

  • ActionCable (--skip-action-cable)
  • ActiveJob (--skip-active-job)
  • ActionMailer (--skip-action-mailer)
  • ActionMailbox (--skip-action-mailbox)
  • ActionText (--skip-action-text)
  • ActiveStrage (--skip-active-strage)

もインストールされません。

私がよく利用するオプションの組み合わせ

$ rails new . \
--database=postgresql \
--skip-action-mailbox \
--skip-action-text \
--skip-active-storage \
--skip-action-cable \
--skip-asset-pipeline \
--skip-test \
--skip-bundle