Git clone から 環境構築 して プロジェクトに参加するまでの道のり（全部盛り）

他の人が作っているプロジェクトに参加したい！ と思い、とりあえずGit Cloneするものの、そのあともなかなか骨が折れます。道すがらバージョンあわせ（ここではRuby・MySQLを使用）に見舞われたり、共同作業を想定している場合は、参加される側（[記事末尾に記載](#製作者側がすること)）もあらかじめしておかなくてはならないことがありますので、その道のりを丸っと記録しておきました。部分的にでも、参考になるところがあればうれしいです。

# Gitリポジトリからcloneする
参加したいGitHubのページにアクセス。「Clone or download」のボタンをクリックするとURLが取得できる。
![スクリーンショット 2020-06-13 12.17.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/410392/7f028040-90e8-d3d5-3cc9-6bf7c5a1963d.png)
このURLをコピーして、ターミナルで以下のようにコマンドを打つと、現在いる場所にフォルダが作成される。

```
$ git clone https://github.com/xxxx/xxxx.git
```
# gemのインストール
作成されたフォルダに移動して

```
$ cd xxxx
```

`bundle install`を行うと

```
$ bundle install
Fetching gem metadata from https://rubygems.org/............
Fetching rake 13.0.1
Installing rake 13.0.1
Fetching concurrent-ruby 1.1.6
Installing concurrent-ruby 1.1.6
Fetching i18n 1.8.2
Installing i18n 1.8.2
Fetching minitest 5.14.0
Installing minitest 5.14.0
Fetching thread_safe 0.3.6
Installing thread_safe 0.3.6
Fetching tzinfo 1.2.7
（略）
```

となって完了するのが理想だが、そうならないことがままある。

## Ruby の version が合わない時

`bundle install`をしようとすると、以下の表示になることがある。

```
rbenv: version `2.6.3' is not installed
```

上の場合は、Rubyのバージョン2.6.3がインストールされていない。
※rbenvはRubyのバージョン管理を行うもの。

インストール可能なリストは以下で確認できる。

```
$ rbenv install --list
Available versions:
  1.8.5-p52
  1.8.5-p113
  
 （略）
```

求められているバージョンがない時は以下のコマンドを打ってから

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

インストールを実行する。

```
$ rbenv install 2.6.3
ruby-build: using openssl from homebrew
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...
ruby-build: using readline from homebrew
```

上記を行なった後で、`bundle install`してみる。

## bundler の version も合わない時
※bundlerはgem同士の関係をいい感じに保ったり、バージョン管理したりできるgem。

`bundle install`をしようとすると、以下のような表示に見舞われることもある。

```
Could not find 'bundler' (2.1.2) required by your /Users/xxx/projects/xxxx/Gemfile.lock. (Gem::GemNotFoundException)
To update to the latest version installed on your system, run `bundle update --bundler`.
To install the missing version, run `gem install bundler:2.1.2`
```

表示にならいbundlerのgem installを行う。

```
$ gem install bundler:2.1.2
Fetching bundler-2.1.2.gem
Successfully installed bundler-2.1.2
Parsing documentation for bundler-2.1.2
Installing ri documentation for bundler-2.1.2
Done installing documentation for bundler after 4 seconds
1 gem installed
```

上記を見届けた後で、`bundle install`してみる。

## さらにDB（MySQL）のバージョンも合わない時

ようやく`bundle install`が進んだかと思いきや以下の表示が出てこける。

```
An error occurred while installing mysql2 (0.5.3), and Bundler cannot
continue.
Make sure that `gem install mysql2 -v '0.5.3' --source 'https://rubygems.org/'`
succeeds before bundling.
```

表示にならいMySQLのgem installを行いたいが、連なるエラー。

```
$ gem install mysql2 -v '0.5.3' --source 'https://rubygems.org/'
Building native extensions. This could take a while...
ERROR:  Error installing mysql2:
ERROR: Failed to build gem native extension.

（略）
```

今回の場合は以下を参考にさせていただいた。（ありがとうございます。）

【参考】[RailsプロジェクトでMySQLがbundle installできなかった](https://qiita.com/akito19/items/e1dc54f907987e688cc0)

```
$ bundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include"
```

# データベースの準備をする

データベースの作成は以下。

```
$ rake db:create
```

次にテーブルやカラムを作成。以下を実行してうまくいかないときは製作者に問い正すのが早いかもしれない。過去の作成・追加・削除の工程で不整合があるとうまくいかない。

```
$ rake db:migrate
```
seedファイル（初期データ）がある場合は下記も実行する。

```
$ rake db:seed
```

# 製作者側がすること
GitHubを使って作業を共有したいなら、製作者側はあらかじめ以下の作業をしておく。
## master.keyの共有
アプリを立ち上げた人がローカルに控えている`config/master.key`を参加者に共有する。参加者は同じディレクトリに同じように作成する。
このファイルは、通常Git上にあげないファイルなのでcloneした人には作成されない（べき）。ゆえに個別に共有するのを忘れない。
## （GitHubなら）参加者をManage Accessに含める必要あり
一緒に作業するためには、GitHubのリポジトリのページの setting > Manage access に参加者を加える必要がある。

# さいごに
以上、今回わたしが行なった対処が中心ではありますが、参考になるところがあればうれしいです。ありがとうございました。