3
1

More than 3 years have passed since last update.

Railsの環境構築(グローバル環境を汚さずに)

Posted at

はじめに

rails newするにはグローバルにrailsをインストール必要があり、gem install railsを実行すると、railsとそれに依存するgemが大量にグローバルにインストールされます。別に(私の経験では)大した害はないですが、やっぱりグローバルはクリーンに保ちたいので、グローバル環境をクリーンに保ちつつRailsプロジェクトの環境を構築する手順をメモしておきます。

実行環境

macOS Catalina バージョン10.15.7
gem 3.2.7
ruby 3.0.0

手順

bundlerをインストール

# bundlerはグローバルにインストールします
gem install bundler

# インストールされたか確認
bundler --version
=> Bundler version 2.2.7   # 私の場合、2.2.7でした

プロジェクトフォルダを作成

mkdir my_app
cd my_app

通常、rails new my_appでフォルダを作ると思いますが、そうしないのがポイントですね。
まあこの段階ではグローバルにrailsを入れてないので、できないんですが、、、

Gemfileを作成

bundle init

Gemfileを編集

Gemfile
# frozen_string_literal: true

source "https://rubygems.org"

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

gem "rails" # この部分をアンコメント

railsをインストール

bundle install --path vendor/bundle

pathを指定することでグローバルではなくプロジェクト直下のvendor/bundle/にrailsや依存するライブラリがインストールされます。
ちなみに、一度bundle install --path vendor/bundleを実行すると、
.bundle/configが作成されます。中を見てみると、

config
---
BUNDLE_PATH: "vendor/bundle"

環境変数のようなものが設定されており、
これがあれば、次回からbundle installだけでvendor/bundle/配下にgemがインストールされることになります。

railsプロジェクト生成

bundle exec rails new .

bundle execはグローバルではなく~/vendor/bundle/のgemを実行してくれます。
他の方の記事では--skip-bundleを渡しているものもありますが、ここでは、bundle/configがすでに作られているので、bundle installが実行されてもグローバルが汚染されることはないです。
Gemfileがコンフリクト起こしますが、上書きして大丈夫です。

サーバー起動

bundle exec rails s

これでサーバーが立ち上がれば成功です。

参考記事

ローカル環境を汚さずにRuby on Railsの環境構築をする - Qiita
新規Railsプロジェクト作成時のコマンド - Qiita

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1