Edited at

非エンジニアがRailsの環境構築したら、つまづきやすい箇所が全部まとまった話

say yes to adventures.jpg

Livesense not engineers Advent Calendar 2018の12月19日を担当する@taku_shibuyaです。

普段はIESHILDOOR賃貸のチーフプロダクトマネージャーをしています。

アドベントカレンダーは2回目の参戦で、去年の記事はコチラ【非エンジニアによるエンジニアチームのマネジメント】です。

去年の僕は、記事の最後にこんなことを書いてました。


以上で1回もコードが出てこないエントリを終了します。来年はもっと技術的なことが書けるようになってたらいいなー!


これで今年は技術的なエントリをしない選択肢が消えました。

ただし、問題は今年に入って一度もプルリクすら出していないということです。

『何書こうかな〜』とか考えても無駄なのです。

一行もコードを書いてないのですから。

今から何かやるという選択肢しかありません。

ということで何やろうか考えた結果、いつかやろうと思って先延ばしし続けていたIESHIL CONNECTの環境構築を自分でやってみることにしました。

※IESHIL CONNECTはRailsを使用


IESHIL CONNECTの環境構築

IESHIL CONNECTのリポジトリのREADME.mdを見ながら進めます。(リポジトリは非公開なので悪しからず)

ちなみにIESHIL CONNECTで使っているツール類のバージョンは以下の通り。

バージョン:

node: 8.6.x
yarn: 1.12.x
ruby: 2.4.2
rails: 5.1.2

まずはgit cloneですね。

その前に、git cloneしたいディレクトリに移動します。

$ cd Dev/

ローカルのDevというディレクトリに移動しました。(任意のディレクトリに移動しただけです)

続いて、git cloneコマンドを叩きます。

$ git clone git@github.com:xxxxxxxxxxx

初っ端からエラー...

Cloning into 'connect.ieshil.com'...

Warning: Permanently added the RSA host key for IP address '192.30.255.113' to the list of known hosts.
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

SSHキーの設定がされてないよ的なエラーですね。。

この記事を参考に、キーの設定をしてみます。

https://qiita.com/shizuma/items/2b2f873a0034839e47ce

まずはキーを入れるディレクトリに移動。

$ cd ~/.ssh

次に、コマンドで鍵を生成。

$ ssh-keygen -t rsa

これでキーができたので、中身をコピペします。

$ pbcopy < ~/.ssh/id_rsa.pub

次は、GitHubにキーを登録します。

スクリーンショット 2018-12-10 14.57.49.png

これでいけるはず!git cloneしたいディレクトリに戻ってさっきのgit cloneコマンドを再度実行します。

今度は無事に成功しました。

次は、git cloneしたディレクトリに移動してbundle installします。

$ cd connect.ieshil.com/

$ bundle install --path vendor/bundle -j4

すると、またエラーが出ました。

rbenv: version `2.4.2' is not installed (set by /Users/xxxxxxx/Dev/connect.ieshil.com/.ruby-version)

Rubyの2.4.2がインストールされてないよと言われているのでインストール。

$ rbenv install 2.4.2

インストールできたので、再度bundle installするためにさっきのコマンドを叩くもエラー。

rbenv: bundle: command not found

The `bundle' command exists in these Ruby versions:
2.3.1
2.4.0
2.4.3
2.5.1

bundlerが入ってないぽいので、インストール。

$ gem install bundler

インストールできたので、3度めの正直のbundle installでようやく成功。

次は、yarnのinstallとbuildをします。

$ yarn

はい、またエラーです。

yarn install v1.9.4

[1/5] 🔍 Validating package.json...
error connect_ieshil_com@: The engine "node" is incompatible with this module. Expected version "8.6.x".
error connect_ieshil_com@: The engine "yarn" is incompatible with this module. Expected version "1.12.x".
error Found incompatible module
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.

そう簡単にはいきません。

バージョンがだめっぽいのでupgradeしてみます。

$ brew upgrade node

$ brew upgrade yarn

アップグレードできたので、再度yarnのinstallとbuildにトライ。

しかし、またエラー...

yarn install v1.12.3

[1/5] 🔍 Validating package.json...
error connect_ieshil_com@: The engine "node" is incompatible with this module. Expected version "8.6.x". Got "11.4.0"
error Found incompatible module
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.

nodeのバージョンが違うから、"8.6.x"にしろやと言われているようです。

まず、ndenvというバージョン管理ツールをbrewでダウンロードして、nodeのバージョンを下げます。

$ brew install ndenv

次は、環境変数を設定します。

$ echo 'export PATH="$HOME/.ndenv/bin:$PATH"' >> ~/.bash_profile

$ echo 'eval "$(ndenv init -)"' >> ~/.bash_profile
$ exec $SHELL -l

終わったので確認してみます。

$ ndenv -v

ndenv 0.4.0

バージョンが出ているので成功っぽいです。やったぜ!

ndenvでnodeをインストールします。

まずインストール可能なバージョンの確認から。コマンドはこちら。

$ ndenv install -l

続いて、バージョンを指定してインストールします。

$ ndenv install v8.6.x

インストールされたnodeのバージョンを確認してみましょう。

$ ndenv install v8.6.x

system
* v8.6.0 (set by /Users/xxxxxxxx/Dev/xxxxxxx/.node-version)

よし!!

次は、ローカルでのnodeのバージョンを設定します。

$ ndenv local v8.6.x

これでnodeのバージョン設定は大丈夫なはずなので、再度yarnを実行します。

$ yarn

通った!

これで設定は終わりです。

Railsサーバーを立ち上げて確認してみましょう。

$ bin/rails s

localhost:3000にアクセスすると、

スクリーンショット 2018-12-18 14.21.04.png

だめですね。

データベースの設定書いてないよと言われているようなので、.envファイルに書きます。

env.localの設定内容をコピーして.env.localにファイル名変更して設置しました。

$ cp env.local .env.local

これで大丈夫なはず。

Railsサーバーを再度、立ち上げて確認してみましょう。

スクリーンショット 2018-12-18 15.12.40.png

できた!


まとめ

いかがでしたでしょうか?

環境構築でつまづきやすいところは、全部つまづきました。

偶然ですが、環境構築でつまづきやすいところがまとまったのではないでしょうか?

懸念としては、環境構築がエンジニアにとっては当たり前すぎる内容だし、非エンジニアには理解し難い内容ということです。

何が言いたいかというと、この記事は需要が無さそうということです。

しかし、それは気にしないことにします。

だって、自分で環境構築できたの嬉しかったから。

明日は同じチームの若手エース@owakaさんです!よろしく!!