はじめに
Railsのアプリケーションを作るときにやる**rails new
**コマンド。
Railsに触れたことがある方は誰もが触ったことあるコマンドです。
rails new
コマンドのオプションやRailsアプリケーションを作る流れをまとめます。
Rails newのオプション
rails newにはさまざまなオプションがあります。
rails new sample_app -d mysql
などを入力したことがあるのではないでしょうか?
実際、どんなオプションがあるのかよくわかっていない方も多いと思うのでまとめます。
rails newのオプションは**rails new --help
**と入力すると表示されます。
% rails new --help
Usage:
rails new APP_PATH [options]
Options:
[--skip-namespace], [--no-skip-namespace] # Skip namespace (affects only isolated applications)
-r, [--ruby=PATH] # Path to the Ruby binary of your choice
# Default: /Users/moriokaryosuke/.rbenv/versions/2.6.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/frontbase/ibm_db/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-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
-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] # Setup the application with Gemfile pointing to your Rails checkout
[--edge], [--no-edge] # Setup the application with Gemfile pointing to Rails repository
[--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
-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.
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.
こんな感じで表示されます。
オプションまとめ
オプション省略形 | オプションコマンド | 説明 |
---|---|---|
--skip-namespace, --no-skip-namespace | 名前空間のスキップ(孤立したアプリケーションにのみ影響) | |
-r | --ruby=PATH | 任意のRubyバイナリへのパス指定 |
-m | --template=TEMPLATE | テンプレートのパス |
-d | --databese=DATABASE | mysql/postgresql/sqlite3/oracle/frontbaseなどのデータベースの指定 |
--skip-gemfile,--no-skip-gemfile | Gemfileを作成しない | |
-G | --skip-git,--no-skip-git | .gitignoreを組み込まない |
--skip-keeps,--no-sikip-keeps | .keepを組み込まない | |
-M | --skip-action-mailer,--no-skip-action-mailer | Action Mailer関連のファイルを作成しない |
--skip-action-mailbox,--no-skip-active-mailbox | gemのAction Mailboxを外す | |
--skip-action-text,--no-skip-action-text | gemのAction Textを外す | |
-O | --skip-active-record,--no-skip-active-record | Active Record関連のファイルを作成しない |
--skip-active-storage,--no-skip-active-storage | Active Storage関連のファイルを作成しない | |
-P | --skip-puma,--no-skip-puma | Puma関連のファイルを作成しない |
-C | --skip-action-cable,--no-skip-action-cable | Action Cable関連のファイルを作成しない |
-S | --skip-sprockets,--no-skip-sprockets | Sprockets関連のファイルを作成しない |
--skip-spring,--no-skip-spring | Springのプレローダーをインストールしない | |
--skip-listen,--no-skip-listen | gemのlistenの外す | |
-J | --skip-javascript,--no-skip-javascript | Javascript関連のファイルを作成しない |
--skip-turbolinks,--no-skip-turbolinks | gemのturbolinksを外す | |
-T | --skip-test,--no-skip-test | test関連ファイルを作成しない |
--skip-test,--no-skip-system-test | system test関連ファイルを作成しない | |
--skip-bootsnap,--no-skip-bootsnap | gemのbootsnapを外す | |
--dev,--no-dev | github リポジトリ上の自分のコードから作成 | |
--edge,--no-edge | github リポジトリ上の最新のコードから生成 | |
rc=RC | railsコマンドの追加設定オプションを含むファイルへのパス指定 | |
--no-rc,--no-no-rc | .railsrcファイルからの追加設定オプションの読み込みをしない | |
--api,--no-api | APIモードでアプリケーションを作成する | |
-B | --skip-bundle,--no-skip-bundle | bundle installをしない |
--webpacker | --webpack=WEBPACK | react/vue/angular/elm/stimulusなどのWebpackerで使うフレームワークを指定 |
--skip-webpack-install,--no-skip-webpack-install | Webpackをインストールしない |
**`rails new`にオプションをつけることで必要ではない機能を外すことができます。** **プロジェクトで必要じゃないものを外しましょう。**
--minimal
またrails6.1より--minimal
という最低限のフレームワーク機能を持たせるオプションが追加されました。
--minimal
と追加すると以下のフレームワーク機能がすべてスキップされます。
スキップされる機能
- action_cable
- action_mailbox
- action_mailer
- action_text
- active_job
- active_storage
- bootsnap
- jbuilder
- spring
- system_tests
- turbolinks
- webpack
Rails Newをする
色々なやり方があり、賛否両論あるかと思いますが、rails new
していきます。
プロジェクトディレクトの作成
% mkdir qiita_app
プロジェクト名にするディレクトリを作成します。
rbenvのインストール
% brew update
% brew install rbenv ruby-build
% echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
% echo 'if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi' >> ~/.bash_profile
% rbenv -v
rbenvをインストールされてない場合はインストールします。
rbenvはRubyをバージョンごとに管理でき、プロジェクトごとにバージョンの指定をすることができるツールです。
Rubyのバージョン指定
% rbenv versions
system
2.6.5
* 2.6.6 (set by /Users/ユーザー名/.rbenv/version)
インストールされているRubyのバージョンを確認します。
% rbenv local 2.6.6
使用したいrubyのバージョンを指定します。
% cd qiita_app
% bundle init
**bundle init
**というコマンドを打ち、Gemfileを作成します。
# frozen_string_literal: true
source "https://rubygems.org"
git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
# gem "rails"
Gemfileを開きます。
コメントアウトされている`# gem "rails"の#を消します。
これで最新のRuby on Railsがインストールできます。
# frozen_string_literal: true
source "https://rubygems.org"
git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
gem "rails", "6.0.0"
バージョン指定したい場合は横に記述します。
パスを指定してbundle installする
パスを指定することでプロジェクトごとにGemのバージョン指定をすることができます。
Gemはそれぞれのバージョンごとに依存している他のGemのバージョンが違うため、エラーになる場合があります。
% bundle install --path vendor/bundle
vendor/bundleを指定するのが一般的です。
ですが、Qiitaの記事 bundle install時に--path vendor/bundleを付ける必要性は本当にあるのか、もう一度よく考えてみようにあるように、する必要はないのかもです。
rails newする
Railsのプロジェクトを作成します。
% bundle exec rails new インストールしたいディレクトリ名 オプション
rails new
の後にインストールしたいディレクトリ名、スペース空けてオプションを記述します。
% bundle exec rails new . -d mysql --skip-bundle --skip-test
カレントディレクトリで作成する場合は.
になります。今回はデーターベースをmysql
、テストはRspec
を使うとしてテストファイルを作成しない設計にしました。
rails new
の前につけている**bundle exec
ですが、つけないとGemfile.lock
に基づかないgemのバージョンを決められたり、不具合が発生する場合があるのでつけたほうが良いです。
bundle exec
とつけて実行すると,そのRailsプロジェクトのGemfileで指定された環境で実行する事ができるようになります。
以上です。よいRailsライフを。
オプションの情報お待ちしてます。
参考サイト