📝

Rails newするときによく指定するオプションまとめ

2021/04/18に公開1

TL;DR

$ 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: /YourPath/.rbenv/versions/3.0.1/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
      [--skip-gemfile], [--no-skip-gemfile]                  # Don't create a Gemfile
  -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
  -P, [--skip-puma], [--no-skip-puma]                        # Skip Puma related files
  -C, [--skip-action-cable], [--no-skip-action-cable]        # Skip Action Cable files
  -S, [--skip-sprockets], [--no-skip-sprockets]              # Skip Sprockets files
      [--skip-spring], [--no-skip-spring]                    # Don't install Spring application preloader
      [--skip-listen], [--no-skip-listen]                    # Don't generate configuration that depends on the listen gem
  -J, [--skip-javascript], [--no-skip-javascript]            # Skip JavaScript files
      [--skip-turbolinks], [--no-skip-turbolinks]            # Skip turbolinks gem
      [--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], [--no-master]                              # 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
  -B, [--skip-bundle], [--no-skip-bundle]                    # Don't run bundle install
  --webpacker, [--webpack=WEBPACK]                           # Preconfigure Webpack with a particular framework (options: react, vue, angular, elm, stimulus)
      [--skip-webpack-install], [--no-skip-webpack-install]  # Don't run Webpack 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.

前提条件

  • ruby 3.0.1
  • Rails 6.1.3.1

データベースを指定する

rails new new-proj -d postgresql

ちなみにサポートされる設定は, mysql, postgresql, sqlite3, oracle, sqlserver, jdbcmysql, jdbcsqlite3, jdbcpostgresql, jdbc

APIしか作らない、Viewは要らない

rails new api-proj --api

フロントエンドと分業してRailsはAPIに徹するときに使う。ちなみにjbuilderもこのモードでは入らない。

ActionMailer使いたくない

rails new nomailer-proj -M

あるいは --skip-action-mailer でもOK

websocket使う予定がないのでActionCableをインストールしない

rails new nocable-proj -C

あるいは --skip-action-cable でもOK

Sprockets使いたくない

rails new nospro-proj -S

あるいは --skip-sprockets でもOK

Springがプロセス詰まるから使いたくないんじゃ

rails new nospring-proj --skip-spring

turbolinksいらね

rails new noturb-proj --skip-turbolinks

webpacker使いたくない

rails new nowebpack-proj --skip-webpack-install

webpackerでreactを入れたい

rails new react-proj --webpack=react

絶対に爆速でEXITするからテスト書かない

sabanna

rails new notest-proj -T

そこまでではないがまぁシステムテストは要らないかな...

rails new nosystemtest-proj --skip-system-test

主に、cabybara, selenium-webdriver, webdrivers周りのインストールがスキップされる

今からRailsでViewも書く前提で自分一人で新規開発やるなら、自分ならまずはこうする

rails new my-proj -d postgresql -S --skip-turbolinks --skip-jbuilder --skip-system-test --webpack=react

規模的に最初はsystem testは手動で良いと思っていて、自分がある程度Reactを使えるのでturbolinksとjbuilder外した状態でスタートする。reactは状況によってはvueを選択する。

databaseはスモールスタートならやっぱりherokuが早いので、postgresqlが第一選択肢に入ってくる。

Discussion

MasamotoMasamoto

https://qiita.com/scivola/items/356e5769e0a8095ab471#comment-d1c7ef8424138e3f7429

実はQiitaでもコメントしたのですが--skip-webpack-installでwebpackオフにならないんですよね。rails webpacker:installを実行しないだけで、Gemfileには入っちゃいます。そしてrails sするとrails webpacker:installしろと怒られます。

--skip-javascriptが正解のようです。

詳しくは下記のISSUEを。
https://github.com/rails/rails/issues/35484

久しぶりに新しいrailsアプリ作り始めてnewしたんですけど「--skip-webpack-installしたのにwebpackがOFFにならない!」って検索しはじめて、見つけたのが自分のコメントだった時のボケ老人感はショックなものがあります😅