HomesteadでRuby on Railsの環境構築

Homesteadはlaravelの開発環境を簡単に構築できるパッケージだが、Ruby on Railsで必要なソフトも入っているため、Homesteadを使用したRuby on Railsの環境を構築していく。

今回はMacで、使用するDBはMySQLとする。

## Homesteadとは？
**Laravel公式のboxで、Vgrantを使用することで仮想マシンにLaravelの開発環境を簡単に構築することができるパッケージです。
PHPやWebサーバ、その他のサーバソフトウェアをローカルマシンにインストールする必要なく、開発環境を構築できます。**

### 導入されているソフトウェア

[公式](https://readouble.com/laravel/5.8/ja/homestead.html)より以下のソフトが既に含まれています。（2019/5 現在）

- Ubuntu 18.04
- Git
- PHP 7.3
- PHP 7.2
- PHP 7.1
- Nginx
- MySQL
- lmmによるMySQLとMariaDBデータベーススナップショット
- Sqlite3
- PostgreSQL
- Composer
- Node (Yarn、Bower、Bower、Grunt、Gulpを含む)
- Redis
- Memcached
- Beanstalkd
- Mailhog
- avahi
- ngrok
- Xdebug
- XHProf / Tideways / XHGui
- wp-cli
- Minio

### オプションで導入できるソフトウェア

- Apache
- Crystal & Lucky Framework
- Dot Net Core
- Elasticsearch
- Go
- MariaDB
- MongoDB
- Neo4j
- Oh My Zsh
- Ruby & Rails
- Webdriver & Laravel Dusk Utilities
- Zend Z-Ray

## VirtualBoxとVagrantのインストール

### VirtualBoxをインストール

仮想化ソフトは他にもいくつかあるそうですが「VirtualBox」を使用

インストールはこちらから >> https://www.virtualbox.org/

**自分の使用しているOSを選択**

<img width="1434" alt="スクリーンショット 2019-05-22 22.13.38.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399928/815af155-e505-f3e4-774d-c99a5f13445a.png">

**【注意】**
「機能拡張がブロックされました」と表示されたら「システム環境設定」→「セキュリティとプライバシー」から読み込みを許可しましょう

### Vagrantをインストール
**Vagrantとは仮想化ソフト(VirtualBox)を使用し、コマンドを入力することで仮想環境を管理したり構築したりすることができるツールです。**

インストールはこちらから >> https://www.vagrantup.com/

**自分の使用しているOSを選択**

<img width="1433" alt="スクリーンショット 2019-05-22 22.19.47.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399928/d0ff3135-ec02-81d6-abf7-a40adde2611e.png">

ダウンロードしたらバージョンを確認してみる。

```bash
$ vagrant --version
 Vagrant 2.2.4
```

これで2.2.4のVagrantがインストールされました。

## Homesteadのboxをインストール

**boxとはOSのディスクイメージファイルで、これを追加することで仮想環境を作成できる。**

https://app.vagrantup.com/laravel/boxes/homestead

上記のリンクの公式を確認すると「laravel/homestead」があるのでこれを取得する。

VagrantCloudにあるboxを追加する場合は名前だけでも良い。

```sh
$ vagrant box add laravel/homestead
```

実行するとproviderは何かと聞かれるので「virtualbox」の「3」を選択する。
結構時間がかかるので終わるまで待つ。

```sh
$ vagrant box add laravel/homestead
==> box: Loading metadata for box 'laravel/homestead'
    box: URL: https://vagrantcloud.com/laravel/homestead
This box can work with multiple providers! The providers that it
can work with are listed below. Please review the list and choose
the provider you will be working with.

1) hyperv
2) parallels
3) virtualbox
4) vmware_desktop

Enter your choice: 3
==> box: Adding box 'laravel/homestead' (v7.2.1) for provider: virtualbox
    box: Downloading: https://vagrantcloud.com/laravel/boxes/homestead/versions/7.2.1/providers/virtualbox.box
    box: Download redirected to host: vagrantcloud-files-production.s3.amazonaws.com
==> box: Successfully added box 'laravel/homestead' (v7.2.1) for 'virtualbox'!
```
Successfulluyとなったので、以下のコマンドでboxがちゃんと追加されたか確認する。

```sh
$ vagrant box list
laravel/homestead (virtualbox, 7.2.1)
```

## Homesteadのファイルをダウンロード

ダウンロードしたファイルは任意のディレクトで良いが、今回はホームディレクトリの直下にダウンロードするので移動しておく。

```sh
$ cd
$ pwd
/Users/ユーザー名
```

**以下のコマンドでgithubからリポジトリをクローンします。**

```sh
$ git clone https://github.com/laravel/homestead.git Homestead
Cloning into 'Homestead'...
remote: Enumerating objects: 59, done.
remote: Counting objects: 100% (59/59), done.
remote: Compressing objects: 100% (46/46), done.
remote: Total 3606 (delta 37), reused 22 (delta 13), pack-reused 3547
Receiving objects: 100% (3606/3606), 782.03 KiB | 863.00 KiB/s, done.
Resolving deltas: 100% (2190/2190), done.
```

## Homesteadの初期化

**Homesteadは`Homestead.yaml`というファイルに色々書くことで、任意の設定をすることができる。**
`Homestead.yaml`は初期化することで生成される。

ダウンロードしたHomesteadディレクトリに移動する。
中に色々なファイルが入っているが、初期化をしていないので`Homestead.yaml`が生成されていない。

```sh
$ cd Homestead/
$ ls
CHANGELOG.md		Vagrantfile		composer.lock		phpunit.xml.dist	scripts
Homestead.yaml.example	bin			init.bat		readme.md		src
LICENSE.txt		composer.json		init.sh			resources		tests
```

以下のコマンドで初期化する。

```sh
$ bash init.sh
Homestead initialized!
$ ls
CHANGELOG.md		LICENSE.txt		aliases			composer.lock		phpunit.xml.dist	scripts
Homestead.yaml		Vagrantfile		bin			init.bat		readme.md		src
Homestead.yaml.example	after.sh		composer.json		init.sh			resources		tests
```

`Homestead initialized!`と表示されたので、中を確認すると`Homestead.yaml`が生成されている。

## SSH鍵のファイルの作成

**ホストOSとゲストOSの通信はSSHで行うので、それに必要な鍵を作成する。**

まずはホームディレクトリに移動して既に鍵があるかを確認。

```sh
$ cd
$ ls -la | grep .ssh
```

`id_rsa`と`id_rsa.pub`が表示されれば、既にSSH鍵ファイルはあります。

無い場合は以下のコマンドで作成する。

```sh
$ ssh-keygen -t rsa
```

途中で`Enter file in which to save the key (/Users/ユーザー名/.ssh/id_rsa):`と保存するディレクトリを聞かれるので、そのままEnterを押す。

次に`Enter passphrase`とパスフレーズを求められるので任意のパスフレーズを設定する。
`Enter same passphrase again:`と再度確認を求められるので設定したパスフレーズを入力する。

```sh
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/ユーザー名/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/ユーザー名/.ssh/id_rsa.
Your public key has been saved in /Users/ユーザー名/.ssh/id_rsa.pub.
The key fingerprint is:
...(以下省略)...
```

ファイルキーが作成されたので、先ほどのコマンドで確認する。

```sh
$ ls -la | grep .ssh
```

## Homesteadの設定

**Homestead(仮想マシン)の各設定は、初期化した時に生成した`homestead.yaml`に記述します。**

Homesteadのディレクトリに移動し、vimで`Homestead.yaml`を編集。

```sh
$ cd Homestead/
$ vim Homestead.yaml
```

下記が`Homestead.yaml`のデフォルトのです。

```yaml:Homestead.yaml
---
ip: "192.168.10.10"     # IPアドレス
memory: 2048            # 割り当てるメモリ
cpus: 2                 # 割り当てるCPU
provider: virtualbox    # 使用するプロバイダ

# SSH公開鍵のパス
authorize: ~/.ssh/id_rsa.pub

# SSH秘密鍵のパス
keys:
    - ~/.ssh/id_rsa

# 共有ディレクトリの設定
# map: ホストマシン側で共有したいディレクトリ
# to: ゲストマシン側で共有したいディレクトリ
folders:
    - map: ~/code
      to: /home/vagrant/cod


# Nginxサイトの設定
# map: アクセスするドメイン名の設定
# to: ゲストマシンNginxのドキュメントルートの設定
sites:
    - map: homestead.test
      to: /home/vagrant/code/public

# 使用するDB名
databases:
    - homestead

# ports:
#     - send: 50000
#       to: 5000
#     - send: 7777
#       to: 777
#       protocol: udp

# blackfire:
#     - id: foo
#       token: bar
#       client-id: foo
#       client-token: bar
```

rails serverは3000なので、コメントアウトを外して新しく記述する。

```yaml
ports:
    - send: 3000
      to: 3000
```

それ以外はデフォルトのままで使用しますが、共有ディレクトリの設定や、ドキュメントルートの設定などの変更が可能です。

デフォルトの`folders`だとホストマシンのホームディレクトリ直下に`code`ディレクトリが指定されていますが、現在`code`ディレクトリがないので作成しておきます。

今後プロジェクトフォルダを作成したときは、この`code`ディレクトリのなかに入ることになります。

```sh
$ mkdir ~/code
```

**【注意】**
`sites`プロパティをHomestead boxのプロビジョニング後に変更した場合、仮想マシンのNginx設定を更新するため、`vagrant reload --provision`を再実行する必要があります。

## ホスト名の設定

**IPアドレス`192.168.10.10`に`homestead.test`というドメイン名で設定してあり、`hosts`ファイルに追記することで、Webブラウザで`http://homestead.test`にアクセスすることができる。**

MacとLinuxでは`/etc/hosts`にファイルがあるので追加していく。
アクセス権がないと保存できないので、`sudo`をつけて`192.168.10.10  homestead.app`を追記する。

```sh
$ sudo vim /etc/hosts

##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1       localhost
255.255.255.255 broadcasthost
::1             localhost

192.168.10.10 homestead.test
```

## Vagrant Boxの実行

各種設定が終わったら仮想マシンを起動します。

Homesteadのディレクトリ内に`Vagrantfile`があるので、違うディレクトリにいる場合は移動します。

```sh
$ pwd
/Users/ユーザー名/Homestead
```

下記のコマンドで仮想マシンを起動する。

```sh
$ vagrant up
Bringing machine 'homestead-7' up with 'virtualbox' provider...
==> homestead-7: Importing base box 'laravel/homestead'...
==> homestead-7: Matching MAC address for NAT networking...
==> homestead-7: Checking if box 'laravel/homestead' version '7.2.1' is up to date...
==> homestead-7: Setting the name of the VM: homestead-7
==> homestead-7: Clearing any previously set network interfaces...
...(以下省略)...
```

以下のコマンドで起動できているかを確認。

```sh
$ vagrant status
Current machine states:

homestead-7               running (virtualbox)

The VM is running. To stop this VM, you can run `vagrant halt` to
shut it down forcefully, or you can run `vagrant suspend` to simply
suspend the virtual machine. In either case, to restart it again,
simply run `vagrant up`.
```

`running (virtualbox)`となっているので起動できていることが確認できます。

あとは`ssh`コマンドで仮想マシンに入ります。

```shell-session
$ vagrant ssh
Welcome to Ubuntu 18.04.2 LTS (GNU/Linux 4.15.0-47-generic x86_64)

Thanks for using
 _                               _                 _
| |                             | |               | |
| |__   ___  _ __ ___   ___  ___| |_ ___  __ _  __| |
| '_ \ / _ \| '_ ` _ \ / _ \/ __| __/ _ \/ _` |/ _` |
| | | | (_) | | | | | |  __/\__ \ ||  __/ (_| | (_| |
|_| |_|\___/|_| |_| |_|\___||___/\__\___|\__,_|\__,_|

* Homestead 8.4.0 released!
* Settler v7.2.1 released! Make sure you update

0 packages can be updated.
0 updates are security updates.


Last login: Thu May 24 08:54:14 2019 from 10.0.2.2
vagrant@homestead:~$ 
```

無事に仮想マシンに入れたので、あとはRailsの環境を構築していきます。

## Ruby on Railsの環境を構築

Homesteadが立ち上がったのであとは必要なソフトなどを入れていくが、既にあるのがほとんどなので`rbenv`等を入れていく。

### 必要なライブラリをインストール

Ubuntu自体をアップデート(最新化)します。

```sh
$ sudo apt update 
```

今回はMysqlを使用するので、必要な関連パッケージをインストール

```sh
$ sudo apt install mysql-server mysql-client
$ sudo apt install libmysqlclient-dev
```

### Rubyインストール

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

**rbenvとは、Rubyの「インストール」と「バージョン切替」を簡単におこなえるようにするためのツールです。**

Gitを使ってrbenvをインストールします

```sh
$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
Cloning into '/home/vagrant/.rbenv'...
remote: Enumerating objects: 15, done.
remote: Counting objects: 100% (15/15), done.
remote: Compressing objects: 100% (11/11), done.
remote: Total 2759 (delta 4), reused 8 (delta 4), pack-reused 2744
Receiving objects: 100% (2759/2759), 528.92 KiB | 874.00 KiB/s, done.
Resolving deltas: 100% (1724/1724), done.
```

インストールできたらrbenvコマンドが使えるように設定する

```sh
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
$ exec $SHELL -l
```

rbenvコマンドが使えるようになったか確認する

```sh
$ rbenv --version
rbenv 1.1.2-2-g4e92322
```

Rubyをビルドするために使うプラグインの「ruby-build」をインストール

```sh
$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
Cloning into '/home/vagrant/.rbenv/plugins/ruby-build'...
remote: Enumerating objects: 38, done.
remote: Counting objects: 100% (38/38), done.
remote: Compressing objects: 100% (25/25), done.
remote: Total 9750 (delta 14), reused 29 (delta 8), pack-reused 9712
Receiving objects: 100% (9750/9750), 2.08 MiB | 2.10 MiB/s, done.
Resolving deltas: 100% (6340/6340), done.
```

インストールできるRubyのバージョンを確認する

```sh
$ rbenv install --list
Available versions:
  1.8.5-p52
  1.8.5-p113
  1.8.5-p114
  1.8.5-p115
  1.8.5-p231
  1.8.6
  1.8.6-p36
  1.8.6-p110
  1.8.6-p111
  1.8.6-p114

...(途中省略)...

  2.5.4
  2.5.5
  2.6.0-dev
  2.6.0-preview1
  2.6.0-preview2
  2.6.0-preview3
  2.6.0-rc1
  2.6.0-rc2
  2.6.0
  2.6.1
  2.6.2
  2.6.3
  2.7.0-dev
  jruby-1.5.6
  jruby-1.6.3

...(以下省略)...
```

バージョンを指定してRubyをインストール。
終わったら仮想マシンにインストールされているRubyのバージョンを確認します。

```sh
$ rbenv install -v 2.6.3
/tmp/ruby-build.20190524115043.18071 ~
Downloading ruby-2.6.3.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.3.tar.bz2
Installing ruby-2.6.3...
/tmp/ruby-build.20190524115043.18071/ruby-2.6.3 /tmp/ruby-build.20190524115043.18071 ~
checking for ruby... /home/vagrant/.rbenv/shims/ruby
config.guess already exists
config.sub already exists
checking build system type... x86_64-pc-linux-gnu

...(以下省略)...

$ rbenv versions
* system (set by /home/vagrant/.rbenv/version)
  2.6.3
```

インストールされているのを確認できたら、仮想マシン全体で有効にするRubyのバージョンを指定する。

ディレクトリごとに指定する場合は`global`ではなく、有効にしたいディレクトリで`local`を指定する。

```sh
$ rbenv global 2.6.3
$ rbenv versions
  system
* 2.6.3 (set by /home/vagrant/.rbenv/version)
```

アスタリスクが移動しました。
ちゃんと最新バージョンがインストールされたかを確認

```sh
$ ruby -v
ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-linux]
```

### bundlerのインストール

**bundlerはプロジェクトごとで使うgemを、インストールしたり使用したりする。
どのバージョンが必要なのかは、プロジェクトフォルダにある`Gemfile`を読み取りることで実行される。**

bundlerはRubyGemsからインストールできるので`gem`コマンドでインストールする。
`bundle`コマンドが使えるようになるので確認する。

```sh
$ gem install bundler
Fetching bundler-2.0.1.gem
Successfully installed bundler-2.0.1
Parsing documentation for bundler-2.0.1
Installing ri documentation for bundler-2.0.1
Done installing documentation for bundler after 2 seconds

$ bundle -v
Bundler version 2.0.1
```

### Ruby on Railsのインストール

Ruby on Railsは、`gem`コマンドでインストールする。
最新ではないバージョンを指定したい場合は`-v`オプションをつけて指定。

インストールが終わったら`rails`コマンドが使用できるので確認する。

```sh
$ gem install rails
Fetching i18n-1.6.0.gem
Fetching rack-2.0.7.gem

...(途中省略)...

Removing ruby (1:2.5.1) ...
Removing ruby2.5 (2.5.1-1ubuntu1.2) ...
Removing libruby2.5:amd64 (2.5.1-1ubuntu1.2) ...
Removing rake (12.3.1-1) ...
Removing ruby-test-unit (3.2.5-1) ...
Processing triggers for libc-bin (2.27-3ubuntu1) ...
Processing triggers for man-db (2.8.3-2ubuntu0.1) ...

$ rails -v
Rails 5.2.3
```

### Railsアプリを作成

`Homestead.yaml`で共有ディレクトリの設定がすでにできているので、`code`ディレクトリ内にファイルを作る。

```sh
$ cd
$ cd code/
```

今回は例として`test_app`というプロジェクトファイルを作成します。

プロジェクトファイルは`rails new`というコマンドで作成でき、`-d`オプションで使用するデータベースを指定できます。

オプションを指定しない場合は「SQLite」というデータベースがデフォルトで使用されますが、今回は「Mysql」を使用するので以下のコマンドでファイルを作成します。


```sh
$ rails new test_app -d mysql
      create
      create  README.md
      create  Rakefile
      create  .ruby-version
      create  config.ru
      create  .gitignore
      create  Gemfile
         run  git init from "."
Initialized empty Git repository in /home/vagrant/code/test_app/.git/
      create  package.json
      create  app

...(途中省略)...

Using spring-watcher-listen 2.0.1
Using turbolinks-source 5.2.0
Using turbolinks 5.2.0
Using uglifier 4.1.20
Using web-console 3.7.0
Bundle complete! 18 Gemfile dependencies, 78 gems now installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.
         run  bundle exec spring binstub --all
* bin/rake: spring inserted
* bin/rails: spring inserted

$ ls
test_app
```

確認すると`test_app`というファイルが作成されています。

### Railsサーバーの起動

**Railsサーバーはプロジェクトフォルダに移動して`rails s`コマンドで起動できます。**

しかしVagrant環境で仮想マシンを起動している場合は、`rails s -b 0.0.0.0`というコマンドでRailsサーバーを起動させます。

localホスト以外からはアクセスできないため、`-b 0.0.0.0`オプションをつけて全てのIPアドレスを許可します。

```sh
$ cd test_app/
$ rails s -b 0.0.0.0
=> Booting Puma
=> Rails 5.2.3 application starting in development
=> Run `rails server -h` for more startup options
Puma starting in single mode...
* Version 3.12.1 (ruby 2.6.3-p62), codename: Llamas in Pajamas
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://0.0.0.0:3000
Use Ctrl-C to stop

```

このように表示されれば無事にサーバーが起動したことになります。
サーバーを停止したいときは`Ctrl + c`で停止することできます。

### ブラウザでアクセス

ドメイン名の設定もデフォルトでしてあるので、ブラウザには`homestead.test:3000`でアクセスできます。

#### Mysqlのパスワードを設定

ブラウザにアクセスすると以下のようなエラーが出ました。
<img width="1433" alt="スクリーンショット 2019-05-24 22.06.15.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399928/6d4a9b9a-16cb-185d-aa5b-0f1c17e9a774.png">

これはRailsアプリがMysqlにhomesteadユーザーでログインしようとした結果、「パスワードがない」と言われていることが原因です。

- **データベース : homestead**
- **ユーザー名 : homestead**
- **パスワード : secret**

**Homesteadでは上記のようなデフォルトの設定があるので、データベースの設定ファイルにパスワードを記述しま**す。

**【注意】**
サーバーを起動しているタブではコマンド操作ができないので、新たにタブを増やし再度`ssh`で仮想マシンに接続します。

データベースの設定ファイルは`config`ディレクトリの中に`database.yml`という名前で入っています。

```sh
$ ls config/
application.rb	credentials.yml.enc  environments  master.key  spring.rb
boot.rb		database.yml	     initializers  puma.rb     storage.yml
cable.yml	environment.rb	     locales	   routes.rb

$ vim config/database.yml
```

vimで開き`password`の所に`secret`を追記して保存します。

```vim:database.yml
# MySQL. Versions 5.1.10 and up are supported.
#
# Install the MySQL driver
#   gem install mysql2
#
# Ensure the MySQL gem is defined in your Gemfile
#   gem 'mysql2'
#
# And be sure to use new-style password hashing:
#   https://dev.mysql.com/doc/refman/5.7/en/password-hashing.html
#
default: &default
  adapter: mysql2
  encoding: utf8
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: root
  password: secret
  socket: /var/run/mysqld/mysqld.sock

development:
  <<: *default
  database: test_app_development

# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
  <<: *default
  database: test_app_test
```

保存したらサーバーを一度停止し、再起動してからブラウザにアクセスしてみます。

#### データベース作成

再びアクセスしてみると先ほどのエラーはなくなりましたが、違うエラーが出てきました。
<img width="1437" alt="スクリーンショット 2019-05-24 22.22.00.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399928/2ab5da1a-9e73-1670-a785-218f54e612f3.png">

これは`Unknown database 'test_app_development'`とでていて、`test_app_development`というデータベースが無いよと注意されています。

**Railsには`rails db:create`というコマンド存在していて、`database.yml`に記述されている情報を元に、データベースを作成してくれます。**

これらはデフォルトで

- `プロジェクトフォルダ名_development`
- `プロジェクトフォルダ名_test`

という2つのデータベース名が記述されているので特に変更はせずに、先ほどの`rails db:create`コマンドを実行して上記の2つのデータベースを作成します。

```sh
$ rails db:create
Created database 'test_app_development'
Created database 'test_app_test'
```

データベースが作成されたので再度ブラウザにアクセスしてみます。

<img width="1439" alt="スクリーンショット 2019-05-24 22.42.57.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399928/f5892bf2-b99d-cd9c-0986-d454d79cbde3.png">

**上記のように表示されれば成功です。これで問題なくアクセスができました。**

## あとはアプリケーション制作

**これでHomesteadを使用したRuby on Railsの環境を構築できました。**
あとは作成したフォルダでアプリケーションを作ってみてください。

## おまけ（gitのブランチ名の表示）

デフォルトだとブランチ名は表示されていないが、設定すれば表示される

```sh
vagrant@homestead:~/code/test_app$
```

```sh
vagrant@homestead ~/code/test_app (master *)
$
```

gitのブランチ名の表示をしたい場合は以下の処理を`.bash_profile`もしくは`.bashrc`に追記する。

```vim:.bash_profileか.bashrcに追記
if [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
fi
if [ -f /etc/bash_completion.d/git-prompt ]; then
    export PS1='\[\033[01;32m\]\u@\h\[\033[01;33m\] \w$(__git_ps1) \n\[\033[01;34m\]\$\[\033[00m\] '
else
    export PS1='\[\033[01;32m\]\u@\h\[\033[01;33m\] \w \n\[\033[01;34m\]\$\[\033[00m\] '
fi
```

追記したら変更を反映させる

```sh
vagrant@homestead:~/code/test_app$ source ~/.bashrc

vagrant@homestead ~/code/test_app (master *)
$
```

## 参考記事

- [VagrantでCentOS7の仮想環境を構築](https://yukimasablog.com/vagrant-centos7)
- [【Laravel 5.5 or latest】Homestead で mac に Laravel 開発環境を構築](https://qiita.com/7968/items/68b3566d92d2b007038e)
- [【CentOS7】Ruby on Railsのインストールから起動まで解説【Mysql】](https://kitsune-programming.com/rails-install)
- [Ubuntu bashのプロンプトHack!!!!（gitブランチ表示）](https://qiita.com/ryosukue/items/bc1eae639e3950790eb9)