【初学者向け】MacでRuby on Railsの環境構築（http://localhost:3000/を立ち上げるまで）

MacでRuby on Railsの環境構築するときの簡単な手順です！とりあえず、何もないところからrails sでサーバーを立ち上げるまでです！

## homebrewをインストール
http://brew.sh/index_ja.html

コマンドは上記のHomebrewのサイトからコピー可能
途中でEnterの入力/インストールユーザのOSパスワードの入力を求められる

### ターミナルにコードをコピペ

```
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
```

### Xcode Command Line Toolsのインストール

ログ中に英語で、
「Xcode Command Line Toolsをインストールされます。続ける場合はRETUENを押してください」
ということが書いてあります。

指示通り「RETURN」キーを押すと、
その直後にパスワードを入力するように求められますが、Macの画面のロックを解除するパスワードを入力し、Xcode Command Line Toolsが自動で、インストールされます。

ここまででが一連のインストールの手順です。

### Homebrewインストール完了確認

```
$ brew doctor
Your system is ready to brew.
```

## homebrewでMySQLをインストール

```
$ brew update
$ brew install mysql@5.7 
```
バージョンを指定してインストールしていますが、バージョンを指定しなければ現在は、MySQL8がインストールされます。現状はまだ、@5.7で走っているプロジェクトが多そうなので、いったん、@5.7でインストールします！
インストールが終わったら、内容を見てみます。

```
$ brew info mysql
```
MySQL の起動

```
$ mysql.server start 
Starting MySQL
SUCCESS! 
```

接続

```
$ mysql -u root
```
 
※``-bash: mysql: command not found``とか、``-zsh: mysql: command not found``とかが出て、コマンドが打てないことがたまにある。

この場合、コマンドのpathが通っていないことが多い。
.zshrcファイルにpathを記載してコマンドが打てるようにする必要がある。（ログインシェルに何を使っているかで、設定ファイルの名前は変わる。今回はzshを想定している。）

以下のコマンドで隠しファイルを開く。

```
$ open ~/.zshrc
```

```.zahrc

export PATH=/usr/local/opt/mysql@5.7/bin:$PATH
```
mysql@5.7のところはそれぞれ使っているmysqlによって変える。

以下のコマンドで環境変数の設定を反映させる。（これを打たないとターミナルを再起動しないと反映されない。）


```

$ source ~/.bash_profile
```


※ちなみに、mysqlのログイン時のパスワードを変更する場合は、
コマンドラインから

```
$ mysqladmin password 新しいパスワード -u ユーザー名 -p
```

から可能です！（デフォルトではrootユーザーのパスワードは設定されません。）

## homebrewを使用して、rbenvおよびruby-buildをインストール（インストール済みの場合は不要）

### rbenvインストール

```
$ brew install rbenv
```
```
$ brew install ruby-build
```

・ruby-buildは、rbenvのプラグイン。（```$rbenv install```コマンドを使うためのプラグイン）
・この後、``$ rbenv install``コマンドで、rubyをインストール

### rbenvでrubyを見るための設定をする

mac osのバージョンによって対応が異なる。

#### macOS High Sierra (ハイ シエラ)など、macOS Catalina (カタリナ)より前のバージョン

.bash_profileに必要な設定を記載する。以下のコマンドで記載させる。

.bash_profileがない場合は、自分で作る。
方法は、``$ vim ~/.bash_profile``などで作成。
以下のコマンドを打って、ファイルに書き込むか、直接テキストエディターから編集する。

```
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
```
```
$ echo 'if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi' >> ~/.bash_profile
```
以下のコマンドで環境変数の設定を反映させる。（これを打たないとパソコンを再起動させて再度ログインしないと設定変更が反映されない）

```
$ source ~/.bash_profile

or

$ source ~/.zshrc
```

#### macOS Catalina (カタリナ)

macOS Catalina から、デフォルトシェルが bash から zsh に変更されている。
なので、.zshrcを作ってそこに設定を書きます。（こちらは直接テキストエディターを編集する方法を紹介しています。）


```
$ vim ~/.zshrc
```

以下の記載をする

```
export PATH="$HOME/.rbenv/bin:$PATH" 
eval "$(rbenv init - zsh)"
```
こちらのコマンドで環境変数の設定を反映。

```
$ source ~/.zshrc
```

これら設定を行うことで、rbenvを使ってrubyのバージョンを反映することが出来ます！

※**メンタをやっていて、これらの設定を行わないと、ruby -vでバージョンが変わらないケースがあったので要注意**

### Rubyをインストール

#### rbenvでrubyをインストール

```$ rbenv version```
を実行し、rbenvで管理されているrubyのバージョンを確認

→開発で使用したい該当のバージョンがなければインストールする必要あり。
```$ rbenv install 2.6.5```（バージョンは一例）

```$ rbenv global 2.6.1```
→rbenvのバージョンを切り替える

```$ rbenv rehash```
→反映

```$ ruby -v```
→rubyバージョンを確認

- Rubyコマンドの参照先をチェック

rbenvの参照先を確認

```
$ which ruby
/.rbenv/shims/ruby
```

rbenvでRubyをインストールすると/.rbenv/shims/rubyが正しい参照場所なので、このように出ていれば正解です！

※**rubyのインストール時にエラーが出た場合**

```
If you don't have the version you need, try upgrading ruby-build: brew update && brew upgrade ruby-build
```

このエラーが出れば、指摘通り以下のコマンド実行

```$brew update```

```$brew upgrade ruby-build```

その後、もう一度トライすると上手くいく

```$rbenv install 2.6.5```
```$ rbenv install 2.6.1```
→rbenvでrubyをインストールする

## Railsを設定
- 新アプリ名のディレクトリを作成
- ``$ cd ~/<ディレクトリ名>``コマンドで、アプリディレクトリに移動
```$ bundle init```
→Gemfileを作成

できあがったGemfileのRailsのコメントアウトを外す
gem "rails"
→Gemfileでrailsのバージョンを確認

### bundlerのインストール

```$ gem install bundler```

```$ bundle -v```
→bundlerのバージョンを確認

**補足**
・gemを管理するシステムがRubyGems
・RubyGemsはRubyに標準添付されているシステムなのでRubyが使える状態ならすぐに使うことができる。→rubyに同梱（セット）
→同梱のバージョン確認には
```$ gem update --system```
・bundlerはgemの一種で、gemをデフォルトのRubyGemsより効率よく管理できるツール。まず最初に、RubyGemsを使ってbundlerをインストール
・bundlerを使ってgemをインストール
・BundlerはGemfileをもとにgemをインストールする。
・gemをシステムにインストールするのではなく、ディレクトリ内で管理する。
・そのためにpathオプションをつける。
```$ bundle install --path vendor/bundle```でpathオプションをつける。このことにより、コマンドの頭にbundle execコマンドをつけて、実行する。
・railsもgemの一種

#### Rails（gem）のインストール

``$ bundle install --path vendor/bundle``

※もし以下のようなbundlerのバージョンエラーが出たら

```
To update to the latest version installed on your system, run `bundle update --bundler`.
To install the missing version, run `gem install bundler:2.0.2
```
→```$ gem install bundler```で最新のbundlerをインストール
→```$ rbenv rehash```
→```$ bundle -v```でbundlerのバージョン確認
→その後もう一度
```$ bundle install --path vendor/bundle```

### rails new

```$ cd ~/<ディレクトリ名>``` で、アプリのディレクトリに移動

```$ bundle exec rails new . -d mysql --skip-turbolinks --skip-test --skip-coffee```
→.はカレントディレクトリを意味する
→gemfileの上書きを聞かれた場合は、yes入力でgemfileを上書き
→bundle installも自動でやってくれる
→うまく行かなければ
```$ bundle update```

※ **mysqlエラー出た場合**
以下をやってみる
```$ bundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/openssl/lib"```
```$ bundle install```


### nodeを使う場合（nodeを使わないのであれば飛ばしてください）

nodeのバージョンなどをいじる場合は以下の記事を参照
→https://qiita.com/kenkentarou/items/f27bd4e49af6fe429429

※**nodeとは**
関係性
ruby <-> node
rbenv <-> nodebrewやnvm

nodeは一つの言語（node.jsと同義）で、nodeは、言語としても扱うし、サーバーサイドで動くためにコンパイルするシステムとしても使われる

## データベースの設定

### データベースの設定ファイルを作成
通常の現場では、datebase.yml.defaultというファイルを作成して、設定情報はrootなどセキュリティー上影響ない初期値を入れておき、こちらをgit管理します。

ローカルで作業する際には、datebase.yml.defaultをコピーして、database.ymlというファイルを作成し、自身のPC上の設定に合わせ修正したものを使います。自身の設定に合わせたdatabase.ymlを作成しないと、ローカルでデータベースを走らせることができません。

以下のコマンドを実行し、database.yml.defaultをコピーして、自身の環境に合わせたdatabase.ymlを作成しましょう。

```
$ cp config/database.yml.default config/database.yml
```

- database.ymlの設定を自身の環境に合わせて修正
ユーザー名やパスワードの設定

### ローカル上にデータベーステーブル作成

- ``$ bundle exec rails db:create``
→データベーステーブル作成

```$bundle exec rails db:migrate```
→migrationが必要なファイルがあれば実行

## サーバー立ち上げ

- bundle exec rails sコマンドを実行し、railsサーバーの立ち上げ。

- localhost:3000にアクセスし、完成形画面が表示されることを確認


## git hubの初期設定

### git hubの登録

git hubのサイトで、普通にユーザー登録をする。

### gitの初期設定

```
$ git config --global user.name "git hub git hubに登録したユーザー名"

$ git config --global user.email git hubに登録したemailアドレス

$ git config --global core.editor "rubymine --wait"

$ git config user.name # 設定したユーザー名を確認できる

$ git config user.email # 設定したメールアドレスを確認できる

$ git config core.editor # 設定したエディターを確認できる

$ git config --list # gitの登録情報全てを表示する

$ cat ~/.gitconfig # .gitconfigという設定ファイルの中身をみる
```

## .gitignore_globalの設定

作業中のすべてのリポジトリで、ある特定のファイルを無視したい場合があったりします。 Mac OS X を使っているのなら、 .DS_Store というファイルとか、エディターにrubymineを使っている場合などは、.ideaファイルなどがそれに当たります。
その場合、.gitignore_globalに記載しておけば、どのプロジェクトでもそのファイルは無視してくれます。
vimのコマンドでファイルを新しく作ります。

```
$ vim ~/.gitignore_global
```

ファイル内に何を記載するかはその人によりますが、私の設定は以下のようにしています。

```
*~
.DS_Store
.idea/
.generators
*.rdb
.rakeTasks
```

この後、以下のコマンドを打てば反映されます。

```
$ git config --global core.excludesfile ~/.gitignore_global
```

## ターミナルにブランチ名を表示する設定

今いるブランチがどこかを調べるために、いちいち、``$ git branch``とかで確認していると面倒臭いので、常に、今いるブランチ名をターミナルに表示する設定をしておきます。

こちらの記事が参考になったので、こちら記事の通り設定してみてください。

https://suwaru.tokyo/1%E7%AE%87%E6%89%80%E3%82%B3%E3%83%94%E3%83%9A%E3%81%99%E3%82%8B%E3%81%A0%E3%81%91%E3%81%A7git%E3%83%96%E3%83%A9%E3%83%B3%E3%83%81%E5%90%8D%E3%82%92%E5%B8%B8%E3%81%AB%E8%A1%A8%E7%A4%BA%E3%80%90-zshrc/

## Googleクロムの拡張機能　octotree導入 

https://chrome.google.com/webstore/detail/octotree/bkhaagjahfmjljalopjnoealnfndnagc?hl=ja

こういう拡張子があります。かなり作業効率が上がるので、入れておいた方が良いです！

[![Image from Gyazo](https://i.gyazo.com/7e5613b6b35ab7606000916a1fd53e33.png)](https://gyazo.com/7e5613b6b35ab7606000916a1fd53e33)

アクセストークンなどの設定が必要になりますが、簡単なので、ググってやってみましょう。


## git flowでの管理の場合

git flowがPCに入っている前提で、
(PCにgit flow入れてなければ``$ brew install git-flow``でインストール)

```$git flow init```
→アプリのディレクトリ全体がgit管理対象になる設定は、 ``git init`` と言うコマンドだが、Railsの場合は rails newしたタイミングで良しなに``git init``までやってくれている。``git flow　init``はgit flowでスムーズに開発するするための初期設定をやってくれるコマンド。
→``git flow init``を打つと、ローカルにmasterとdevelopのbranchが出来る

### プッシュする前に確認すること

.gitignoreに入れておかなければいけないファイル、ディレクトリが無いかどうか

ex) /vender等

## リモートリポジトリにプッシュする
``$ git add .``
``$ git commit -m "inital commit"``

``$ git remote add origin https://github.com/hoge/hoge.git``

```$git push --all```
→ローカルにあるdevelopとmasterの両方をリモートにあげる

レビューをしやすくするためにrails newの段階でgit flow initをしてmasterとdevelopブランチを自身のパブリックリポジトリに対してプッシュしています！

## gitのエイリアスの設定

gitのエイリアスを設定する方法は２つあります。

- .gitconfigファイルを直接編集する
- コマンド打って.gitconfigファイルを修正する

結果、やってることは同じなのですが、両方の方法を紹介します。

### .gitconfigファイルを直接編集する

このコマンドで、設定ファイルを開きます。

```
$ open ~/.gitconfig
```
このコマンドで、ルートディレクトリにある隠しファイル.gitconfigを開いています。
GUIで操作するなら、直接finderからルートディレクトリに行き、⌘＋shift＋.で隠しファイルを表示出来ますので、そこから直接クリックして開いても大丈夫です。

開けたら、こんな感じで記述して行きます。以下は私の基本設定です。

```
[alias]
	co = commit
	br = branch
	ch = checkout
	st = status
```
こうすると、例えば、g``$ it commit``は、``$ git co```と打つだけで済みます！

### コマンドで打って設定する方法

以下のコマンド打てば、.giconfigファイルに設定が反映されます。

```
$ git config --global alias.ci commit
```
こんな感じで打つと、設定できます。

## コマンドのエイリアス設定

エイリアス設定をするためには、.bashrcにエイリアスを記述必要があります。
エイリアスは.bashrcというファイルに記述します。

まず、ファイルを開きます。gitのエイリアスの時と同じ要領です。

```
$ open ~/.bashrc
```
開いたファイルに以下を記載します。私が書いている設定です。

```
alias be='bundle exec'
alias bi='bundle install'
```

次に、bash_profileで.bashrcを読み込む設定をする必要があります。

エイリアスは.bashrcに書いただけでは設定が反映されません。

なので設定を反映させるために、.bash_profileに.bashrcを読んでもらう必要があります。

.bash_profileは パソコンが起動されると読み込まれるものなので、そのタイミングで.bashrcも読んでもらいます。（基本.bashrcはシェルにログインしたタイミングで読み込まれるファイル）

ターミナルから

```
$ open ~/.bash_profile

```

と打って、.bash_profileを開き、ファイルの一番下に以下のコマンドを記述しましょう。

```
$ source ~/.bashrc
```

そして、この変更自体も反映させなければいけないので、ターミナルから

```
$ source ~/.bash_profile

```
を打ちます。

ターミナルの再起動でも.bash_profileが読み直されるのでそれでもオッケーです。

これでエイリアスの設定は完了です。

これらが最初、PCを買った後に行う基本の初期設定です。

## ターミナル関連の設定メモ
- peco
- その他
    - https://qiita.com/notakaos/items/701fad47605e586af268