Help us understand the problem. What is going on with this article?

【超基礎】Rails環境構築とよくでてくる用語

先日Railsの環境構築をしたところ、「???」となる用語が多く、大変時間がかかってしまいました。自分用のメモも兼ねて、Rails環境構築関連用語の説明をします。
間違いなどあれば、お手柔らかにお教えていただけると嬉しいです。

記事構成としては、Railsインストール時の概要を載せたあとに、詳しい用語の説明をし、最後にインストールの詳細手順を見ていきます。

Railsことはじめ 〜大まかな手順〜 

Homebrewをインストール

rbenvをインストール+パスを通す

Rubyをインストール

Bundlerをインストール

Railsをインストール

おおかたこういった流れではないでしょうか。

「???」

(RubyとRailsの説明ははぶきます)

Homebrewってなんですか

Homebrew:MacOS用のパッケージ管理システム。パッケージの依存関係も管理してくれる万能屋さんです。

(こまかい用語)

 ・パッケージ管理システム:パッケージをインストールしたり、アンインストールしたり、バージョンの管理ができるシステム

 ・依存関係:パッケージAを動かすためには、パッケージBが必要だとしましょう。その場合に、パッケージAインストール時に、一緒に自動でパッケージBもインストールしてくれます。

 ・パッケージ:「ある機能に関連するコードを集めたプログラム部品。開発者がプログラム内で該当のパッケージの使用を宣言し、その機能を呼び出して利用する」(IT用語辞典「パッケージ」要約)

rbenvってなんですか

rbenv:Rubyのバージョン管理ツール。プロジェクトに応じて、使用するRubyのバージョンが指定できるようになります。

(こまかい用語)

 ・パスを通す:コマンド検索パス(PATH=道)を追加することです。新たなコマンドをインストールしたときに行いますが、コマンドによっては自動で行ってくれます。

 ・コマンド検索パス:シェル(広義にはターミナル)が、ユーザにより入力されたコマンドを実行するために、コマンドの実行ファイルを探しに行くための場所のこと。

 ・シェル:ユーザとOSが対話するための窓口(インターフェース)を提供するソフトウェアです。

Bundlerってなんですか

Bundler:Rubyのライブラリであるgemの管理ツールです。 あくまで主観ですが、HomebrewのRuby版というイメージ。 Homebrewと同じく、gemのバージョン管理やgem同士の依存関係にも対応してくれます。
Bundler initするとできるGemfileにインストールしたいgemを記述し、それを元にbundlerを使ってインストールします

(11月13日訂正)@scivolas様のご指摘に基づき、取り消し線箇所を訂正します!
Rubygemsは「Ruby用のパッケージ管理システム」なので、MacOS用のパッケージ管理システムであるHomebrewと類似した点があります(主観)。一方でBundlerは、個々のプロジェクトごとのgem管理を助けてくれるツール。主な機能として、以下があるようです。

・それぞれのプロジェクトで使用するgemのインストール(Gemfileで指定されたもの)
・上記と依存関係にあるgemの自動インストール
bundle exec gem uninstallbundle cleanによる不要gemの削除(詳細はbundleの日本語ドキュメントを参照ください)
bundle showによる、Gemfileで指定されたgemの一覧表示

参考:
Qiita:gem管理あれこれまとめ
bundler日本語ドキュメント:bundle show
bundler日本語ドキュメント:bundle clean
bundler概要まとめ
Rubygems wiki

(こまかい説明)

 ・ライブラリ:パッケージ(前述)の集合体です。パッケージひとつひとつが本で、ライブラリは図書館というところでしょうか。

 ・gem:(一つ一つが)Rubyのライブラリです。例として、Rails(Webフレームワーク)やRspec(テストフレームワーク)などがあります。ちなみにBundler自身もgem。

 ・Gemfile:Railsアプリで利用するgemの一覧を記述したファイルです。このファイルに基づいて、必要gemのインストールを行います。新しくgemを追加するさいは、Gemfileにgemの名前を追記しインストールします。

 ・Gemfile.lock:上記のGemfileをもとに、実際にインストールされたgemの一覧(依存関係にあるgemも含む)とバージョンがすべて記載されたファイルです。情報出力ファイルなので、基本的に手動することはなく、bundle installもしくはbundle updateのタイミングで自動更新されます。

概要がわかったところで、構築!

Homebrewをインストール:

Homebrew公式サイトから、「インストール」という文字下のスクリプトをシェルにコピペ
(Homebrew公式サイトはこちら:https://brew.sh/index_ja.html)

Homebrewがインストールされているかの確認:

$ brew -v

Homebrewのアップデート:

$ brew update

rbenvをインストール+パスを通す

rbenvのインストール:

$ brew install rbenv ruby-build

そしてパスを通す:

$ echo 'export PATH="~/.rbenv/shims:/usr/local/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
$ source ~/.bash_profile

rbenvがインストールされているかの確認:

$ rbenv -v

rbenvのアップデート:

$ brew upgrade rbenv

Rubyをインストール

インストール可能なRubyのバージョンリストを取得:

$ rbenv install --list

適当なバージョンのRubyをインストール(ここでは最新の2.6.5):

$ rbenv install 2.6.5

環境全体に適用するRubyのバージョンとして、2.6.5を指定:

$ rbenv global 2.6.1
$ rbenv rehash
$ ruby -v

Bundlerをインストール

bundlerのインストール:

$ gem install bundler

bundlerがインストールされているかの確認:

$ bundle -v

bundlerのアップデート:

$ gem update bundler

やっと、Railsのインストール

まずは、Railsをインストール+作業するためのディレクトリを作成して、移動:

$ mkdir ~/workspace
$ cd ~/workspace

(念のためバージョン切り替えに備え)Rubyのバージョンを指定しておきます:

$ rbenv local 2.6.5

ゴール近いです。
gemインストールのため、Gemfileを作成します:

$ bundle init

作成されたGemfileを開け、最終行のrailsのコメントアウトを外します:

Gemfile
# frozen_string_literal: true
source "https://rubygems.org"
git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
# gem "rails"

この最終行を↓・・・

+ gem "rails" (変更あと)
- # gem "rails" (変更まえ)

Railsをインストールし、バージョンも確認します:

$ bundle install --path=vendor/bundle
$ bundle exec rails -v

Railsアプリケーション作成(わ〜い!):

$ bundle exec rails new hello_world

作成したアプリケーションフォルダ内に移動し、Webサーバを起動(どきどき):

$ cd hello_world
$ rails server

Are you on Rails??

https://localhost:3000/へブラウザアクセスしてみましょう!
このような幸福感いっぱいの画面が表示されたら成功です!
20190104102307.png

おまけ(エラー時の参考までに)

・Rubyを最新版にアップデートする
・以下の(素晴らしい)記事を参考にする
https://qiita.com/kyaneism/items/9750b41530b034c43495
https://qiita.com/pop_momo/items/ff6b63445b3be2cd8023
https://qiita.com/KKKeisuke/items/7cbf1136e465879bea94

おつかれさまでした!!

ここまでお付き合いいただき、ありがとうございました!

 

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away