Ruby on Rails 6 ローカルインストール手順(Bundler / mac)

Ruby on Rails 6 ローカルインストール手順(Bundler / mac)

August 2, 2020

作業途中にエラーが出るなどして手間取ったので、手順を記録しておきます。同じ症状で悩んでいる方がこの記事を見つけ、作業の一助になれば幸いです。

なお、タイトルにもある通り、この記事は Bundler の bundle install で mac のローカル環境に Rails をインストールするための手順です。

  • 参考:私の環境
    • macOS Catalina
    • Bundler 2.1.4
    • Ruby 2.7.1

アプリのバージョンなどはあまり関係ないため、気にしなくて大丈夫です。

なお、Rails は過去のバージョンも含め一切インストールしておらず、今回が初のインストールという状態です。インストールするのは、Rails 6.0.3.2(私が作業した時点で最新版だったもの)です。

ここで、インストールする Rails のバージョンが6ということが重要です。詳細はこの記事を読み進めていただければ分かりますが、Rails 6 から「webpacker」という gem が必須になったことに伴ってエラーなどが発生します(私はここに手間取りました)。

そのため、Rails 5 以前をインストールする場合には、Rails 5 のインストール方法を紹介している方の記事を参考にするのが良いでしょう。

では、手順を記載していきます。

1. Bundler のパス設定を確認する #

以前にも Bundler を使って何かをインストールしたことがあるならば設定済みだとは思いますが、ローカルにインストールするために最も重要なことですので、念のため確認しておきましょう。

  • ホームディレクトリ配下の隠しフォルダ .bundle にある config ファイルを開く
  • 「BUNDLE_PATH: “vendor/bundle”」の記載があれば OK
  • なければターミナルから bundle config set path “vendor/bundle” を実行する

bundle install した際のインストール先フォルダを指定しています。これが設定されていれば、bundle install の際にローカルにインストールされるようになります。設定がなければグローバルにインストールされてしまいます。“vendor/bundle"の部分は任意のパスで構いませんが、一般的に"vendor/bundle"が使用されますので、合わせておくのが無難です。

2. Rails をインストールする #

以降、ホームディレクトリ配下に「rails_workspace」というフォルダを作って進めていきます(もちろん、どのディレクトリにインストールするかは任意です)。

  • ターミナルから cd で rails_workspace に移動後 bundle init を実行する(Gemfile の作成)
  • 作成された Gemfile をテキストエディタ等で開く
  • 最終行の「# gem “rails”」のコメントアウトを解除し「gem “rails”」にする
  • ターミナルから rails_workspace にいる状態で bundle install を実行する

これで Rails がインストールされました。rails_workspace/vendor/bundle 配下に Rails が入っています。次に Rails の新規プロジェクトを作成します。以下ではプロジェクト名を project_x としていますが、名称は任意です。

  • ターミナルから rails_workspace にいる状態で bundle exec rails new project_x を実行する

実行結果の最後に、「cannot load such file - bootsnap/setup (LoadError)」と表示されますが、今の時点では気にしなくて大丈夫です。

なおこのとき、bundle exec をつけず、単に rails new とした場合は「Rails is not currently installed on this system.(Rails は現在このシステムにインストールされていません)」のエラーとなります。rails は bundle install によりローカルにインストールされており、システムのグローバルには存在しません。単に rails new とした場合は、グローバルにある rails を探しに行きますが、そこに rails は存在しないためです。

3. Rails サーバを起動する #

Rails サーバを起動します。私はここでエラーが出て引っかかりました。

  • ターミナルから cd で project_x に移動し bundle exec rails s を実行する

しかし、以下のエラーが出ます。(なお以下は必ずしもエラーの出る順番通りには記載していません)

  1. No such file or directory @ rb_sysopen - (省略)/webpacker.yml (Errno::ENOENT)
  2. No such file or directory @ rb_sysopen - (省略)/webpacker.yml (RuntimeError)
  3. Webpacker configuration file not found …(省略)Please run rails webpacker:install

最後のメッセージに注目してください。「Please run rails webpacker:install」は「rails webpacker:install」を実行してください、という意味です。

記事の冒頭でも触れましたが、Rails 6 からは「webpacker」という gem が必須となったものの、それがインストールされていないためにこのエラーとなっています。

メッセージの指示に従って実行しますが、ここで注意が必要なのは、指示されたコマンドの前に、bundle exec を加えることです(繰り返しになりますが、Rails はローカルにしか存在しないため)。

  • ターミナルから project_x にいる状態で bundle exec rails webpacker:install を実行する

すると、インストールはうまくいかず、下記のメッセージが帰ってきます。

Yarn not installed. Please download and install Yarn from https://yarnpkg.com/lang/en/docs/install/

(webpacker をインストールするためにまず)Yarn をインストールしてください、という意味です。

Yarn は JavaScript のパッケージマネージャです。ウェブサイトが示されていますので、そこからダウンロード&インストールしてもいいですし、HomeBrew を使っている方は HomeBrew 経由でインストールしてもいいです。私は HomeBrew からインストールしました。コマンドは下記です。

  • ターミナルから brew install yarn を実行する

Yarn インストール後、再び「bundle exec rails webpacker:install」してみましょう。

  • ターミナルから project_x にいる状態で bundle exec rails webpacker:install を実行する

すると、無事にインストールすることができたと思います。

最後に改めて Rails サーバを起動してみましょう。

  • ターミナルから project_x にいる状態で bundle exec rails s を実行する

問題なく起動できたはずです。試しにブラウザから「http://localhost:3000/」に接続してみてください。

You’re on Rails!

無事に Rails サーバが起動できています。

なお Rails サーバは、ターミナルから「Ctrl + C」で停止することができます。忘れずに停止してから作業を終えましょう。

以上で作業は終わりです。

補足:削除しても良いファイル・ディレクトリ #

一連の作業終了後、ファイル・ディレクトリは以下のようになっています。

  • rails_workspace
    • Gemfile
    • Gemfile.lock
    • vendor
    • project_x

上記の中で、Rails プロジェクト(rails new でつくるもの)である「project_x」だけがあれば Rails のアプリ開発は可能です。そのため、他に新規プロジェクトを作成しないのであれば、project_x 以外のファイル・ディレクトリである「Gemfile」「Gemfile.lock」「vendor(およびその配下)」は削除して構いません。

それらを一度削除した後で新規の Rails プロジェクトを作成したくなった場合は、再度 Rails のインストールからやり直しましょう。

以下、再び Rails のインストールを行う時のために、手順をまとめておきます。

手順まとめ1(Rails インストールから Rails サーバ起動まで) #

これまで順を追って説明してきた手順を下記にまとめます。なおこれまでは説明のため、webpacker まわりで意図的に一度エラーを起こすなどしてきましたが、下記ではその部分の手順は含めず、Rails サーバ起動までに必要となる作業のみを書いています。

前提1:Bundler のパス設定確認は省略します。一度設定すれば、自分で意図的に変えない限り設定は変わらないため、何回も確認する必要はないからです。

前提2:Yarn のインストール手順は飛ばします。これまでの手順に従って一度インストールされていれば、2回目のインストールは不要だからです。

前提3:手順中に登場する下記の名称は任意です。

  • rails_workspace … Rails をインストールするディレクトリ
  • project_x … rails new してつくる新規プロジェクト

手順

  1. ターミナルから cd で rails_workspace に移動後 bundle init を実行する
  2. 作成された Gemfile をテキストエディタ等で開く
  3. 最終行の「# gem “rails”」のコメントアウトを解除し「gem “rails”」にする
  4. ターミナルから rails_workspace にいる状態で bundle install を実行する
  5. ターミナルから rails_workspace にいる状態で bundle exec rails new project_x を実行する
  6. ターミナルから project_x にいる状態で bundle exec rails webpacker:install を実行する
  7. ターミナルから project_x にいる状態で bundle exec rails s を実行する

手順まとめ2(新規プロジェクト作成から Rails サーバ起動まで) #

以下の状態から、新規プロジェクトを追加で作成したい時は、上記手順の5番目(「ターミナルから rails_workspace にいる状態で bundle exec rails new project_x を実行する」)から実施してください。

  • rails_workspace
    • Gemfile
    • Gemfile.lock
    • vendor
    • project_x

この時、既存プロジェクトと名前を重複させることはできないため、新規プロジェクトの名前は project_x 以外としてください。

終わり #

以上です。作業おつかれさまでした!