はじめに
Rails 6.0.0がリリースされたので、Railsアプリを新規作成してみました。
この記事では、localhost:3000に接続して初期画面が表示されるまでをゴールとします。
前提
- Homebrewインストール済み
- rbenvでRubyのバージョンを管理している
- Bundlerを使ってGemを各Railsアプリ内にローカルインストールしている
ここではHomebrew
, rbenv
, Ruby
, Bundler
のインストール、各種設定は省略させていただきます。
私は下記のサイトを参考にしました。
Homebrew公式
rbenvの使い方と仕組みについて
rbenv や Bundler を用いた Ruby環境構築
Rails開発環境の構築(複数バージョン共存可能)(Homebrew編)(個人的に一番参考にさせて頂いた記事)
環境
- macOS Mojave バージョン 10.14.5
- Homebrew 2.1.10
- rbenv 1.1.2
- Ruby 2.6.3
- Bundler version 2.0.2
Railsのインストールの前に
Rails6ではwebpacker
が標準でインストールされるようになりました。
これにより**yarn
のインストールが必要になりました。**
まだインストールされていない方はHomebrewからyarnをインストールしておきましょう。
$ brew install yarn
下記のサイトが参考になるかと思います。
https://yarnpkg.com/ja/docs/install#mac-stable
Rails6 開発時につまづきそうな webpacker, yarn 関係のエラーと解決方法
Railsのインストール
ディレクトリの作成
まず、新しく作成したいアプリの空のディレクトリを作成します。
今回はtest_app
という名前のアプリを作っていきます。
$ mkdir test_app
ディレクトリが作成できたら、そのディレクトリに移動します。
$ cd test_app
Gemfileの作成
Railsアプリで使用するGemが記述されたGemfile
ファイルを作成します。
$ bundle init
上記のコマンドによって作成されたGemfileファイルを下記のように編集します。
# frozen_string_literal: true
source "https://rubygems.org"
git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
gem "rails" # コメントアウトを外す
Terminalから編集する方法がわからない場合は、Finderからtest_app/Gemfile
を探して直接編集しても大丈夫です。
Bundlerを使ってRailsをインストール
先ほど編集したGemfileを元に、Railsをインストールしていきます。
この時にpathオプションでインストールする場所を指定することで、Railsをローカルインストールします。
ここではpathオプションにvendor/bundle
を指定します。
$ bundle install --path vendor/bundle
Fetching gem metadata from https://rubygems.org/.............
Fetching gem metadata from https://rubygems.org/.
Resolving dependencies...
Fetching rake 12.3.3
Installing rake 12.3.3
Fetching concurrent-ruby 1.1.5
Installing concurrent-ruby 1.1.5
Fetching i18n 1.6.0
Installing i18n 1.6.0
# 以下略…
インストールが成功していれば、test_app内に
Gemfile.lockファイル
vendorフォルダ
が作成されています。これでRailsがインストールできました。
nokogiriエラーが出てしまったら
bundle install時にnokogiri
のインストールエラーがよく起こります。
もしこのエラーが起きた時は、下記の記事を参考にしていただければ幸いです。
bundle install時にnokogiriエラー(nokogiriのバージョン1.10.4)
nokogiri を嫌いにならないで 〜インストール時のエラーを乗り越えろ〜
Railsアプリの新規作成
次に、インストールしたRailsを使ってRailsアプリを新規作成します。
rails new
rails new
コマンドでRailsアプリを新規作成します。
$ bundle exec rails new .
exist
create README.md
create Rakefile
create .ruby-version
create config.ru
create .gitignore
conflict Gemfile
Overwrite /Users/[ユーザー名]/test_app/Gemfile? (enter "h" for help) [Ynaqdhm]
Gemfileを上書きしていいですか?と聞かれるのでy
とEnter
を入力して上書きします。
これで色々とファイルが作成されます。
Overwrite /Users/[ユーザー名]/aaaaa/Gemfile? (enter "h" for help) [Ynaqdhm] y
force Gemfile
run git init from "."
Initialized empty Git repository in /Users/sasakuranaoya/aaaaa/.git/
create package.json
create app
create app/assets/config/manifest.js
create app/assets/stylesheets/application.css
create app/channels/application_cable/channel.rb
create app/channels/application_cable/connection.rb
create app/controllers/application_controller.rb
create app/helpers/application_helper.rb
create app/javascript/channels/consumer.js
create app/javascript/channels/index.js
create app/javascript/packs/application.js
create app/jobs/application_job.rb
# …中略
# 上書きしたGemfileを元にbundle install
The dependency tzinfo-data (>= 0) will be unused by any of the platforms Bundler is installing for. Bundler is installing for ruby but the dependency is only for x86-mingw32, x86-mswin32, x64-mingw32, java. To add those platforms to the bundle, run `bundle lock --add-platform x86-mingw32 x86-mswin32 x64-mingw32 java`.
Fetching gem metadata from https://rubygems.org/............
Fetching gem metadata from https://rubygems.org/.
Resolving dependencies...
Using rake 12.3.3
Using concurrent-ruby 1.1.5
Using i18n 1.6.0
Using minitest 5.11.3
Using thread_safe 0.3.6
Using tzinfo 1.2.5
Using zeitwerk 2.1.9
Using activesupport 6.0.0
# …以下略
これでRailsアプリが新規作成できました。
データベースの作成
rails new
が終了したら、Railsアプリで使用するデータベースを作成しておきましょう。
$ bin/rails db:create
サーバーを起動
あとはサーバーを起動して、localhost:3000
へアクセスすれば終了です。
$ bin/rails s
手順まとめ
# インストールしていなければ
$ brew install yarn
# ディレクトリ作成
$ mkdir test_app
$ cd test_app
# Railsのインストール
# ここでGemfileを編集する
$ bundle init
$ bundle install —path vendor/bundle
$ bundle exec rails new .
# データベース作成
$ bin/rails db:create
# サーバー起動
$ bin/rails s