Skip to main content

1.Ruby on Rails の作成

適当なディレクトリに移動して。

cd ~/rails

rails のプロジェクトをフォルダを作成する。

mkdir test-app
cd test-app

Gemfile を作成する。

bundle init

Gemfile の中身をこのように変更する。

# frozen_string_literal: true
source "https://rubygems.org"

git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }

gem "rails", "~> 6.1.5.1"

gem(ライブラリ)のダウンロード時に基本的には rubygems.org から取ってくるけど、github を優先するものの場合はそちらから取ってくる設定。 rails のバージョンを指定したのはこのテンプレートで利用する devise_auth_token が rails の6系しか利用できないからである。 これがない場合、2022/05 時点で rails7 が入ってしまう。

次に、gem の保存場所の設定を行う。gem は普通にインストールすると Mac 全体共通で利用する場所に保存されてしまう。 gem を全体で利用するのは一見便利だが、複数の rails プロジェクトを同時に開発する場合、各バージョンの互換性が保てなかったりといろいろ問題を起こすのでプロジェクトごとに保存する。 かつては gem のインストール時に--pathフラグが利用できた。今それを利用するとこのような警告が出る。

[DEPRECATED] The `--path` flag is deprecated because it relies on being remembered across bundler invocations, which bundler will no longer do in future versions. Instead please use `bundle config set --local path 'vendor/bundle'`, and stop using this flag

どうやら、--pathの代わりにbundle config set --local path 'vendor/bundle'を実行してからbundle install すれば良いっぽい。

bundle config set --local path 'vendor/bundle'

Ruby on Rails で利用する gem をダウンロード。--jobs=4はダウンロードの処理を並行処理して早くしてくれる。

bundle install --jobs=4

こんな状態になる。

% ls
Gemfile Gemfile.lock vendor

rails プロジェクトを作成する。

  • --api: API サーバーとして利用するモード。js や assets や view などフロントエンドで必要なものを用意しない
  • -d:mysql:DB を mysql に変更。デフォルトは sqlite3
  • --skip-bundle:bundle install を行うと vendor 以下に保存されないため skip させる
  • –skip-test:Rspec を使う予定なので、minitest はスキップ
  • --skip-turbolinks: view で使う turbolinks はいれない
  • --skip-action-mailbox: メールの送受信を rails で行えれるが ses を action-mailer で利用するので不要
  • --skip-active-storage: rails で画像のアップロードを担う。carrierwave と s3 使うので不要
bundle exec rails new . --api -d mysql --skip-bundle --skip-test --skip-turbolinks --skip-action-mailbox --skip-active-storage
      exist
create README.md
create Rakefile
create .ruby-version
create config.ru
create .gitignore
create .gitattributes
conflict Gemfile
Overwrite /Users/a/rails/test-app/Gemfile? (enter "h" for help) [Ynaqdhm] Y
force Gemfile
run git init from "."
Initialized empty Git repository in /Users/a/rails/test-app/.git/
create app
create app/assets/config/manifest.js

途中何か聞かれたらYと答える。

Rails で必要なファイルやフォルダが展開される。

 % ls -A
.DS_Store .ruby-version app lib vendor
.bundle Gemfile bin log
.git Gemfile.lock config public
.gitattributes README.md config.ru storage
.gitignore Rakefile db tmp

.gitignoreを開きvendorフォルダを git の管理対象外にするために以下の記述をファイルの一番下に追加する。

/vendor

まだデータベースの繋ぎや各種設定は行っていないので起動はできませんが、これで Rails の初期化が完了しました。

git add .
git commit -m "Initialize ruby on rails"