⑧Rails + Docker環境から 脱Dockerをやってみた(2020.5時点)

#経緯
当方、某テ●クキャンプ卒の未経験初学者です。
就活のポートフォリオのRailsアプリを制作する途中でDocker環境に移行したので、AWS/ECSでデプロイしようとしていましたが、アプリのレベル、自身の理解度、経費等を考慮しCI/CDの学習に方針を変更しました。

本稿は、Docker環境のRailsアプリをgit clone（ソースのコピー）をして、Dockerを外してRails sで開発する状態に戻す作業です。
初学者の迷走ゆえ、ベストプラクティスではないと思いますが、こんなこともあるのね、という感じで見ていただけたら幸いです。


#前提
  ・Ruby on Rails 5.2.4.2 
  ・Ruby 2.5.1
  ・MySQLl:5.6  の環境でアプリ開発していた

 ・ Docker version 19.03.8
 ・ docker-compose version 1.25.4  を途中から導入した
 ・ docker移行直前にgit cloneしていなかったため、git cloneでリポジトリ複製から始める

 ・ Githubリモートリポジトリがある
 ・ GithubDesktopで作業する

#Rails + Docker環境のアプリ・ソースコードをコピーする( git clone )
 Git hub リポジトリのページを開きます
Clone or download　ボタンを押して URLをコピーします
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617331/eab1539e-56e4-d8fe-d71e-85b4d8e52b45.png)

コピーする先、場所（ディレクトリ）を決めます

今回は、当方のmacPCの

user/MyApp-deproyに、MyApp-deproyフォルダを新規作成しました

ターミナルでそこに移動します


```ruby:ターミナル 
cd MyApp-deproy
```

```ruby:ターミナル 
Git clone  “URLペースト” + “スペース 名前” でコマンドを実行します

クローン元の名前は “nomadcafe” です

今回コピーして作成する名前は”nomadcafe-sub” にします

実行するコマンド
git clone https://github.com/Sakagami-Keisuke/nomadcafe.git nomad cafe-sub
```

こんな感じです　nomadcafe-subと中身が出来上がりました
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617331/228ed0ae-aba1-2038-95d1-1cf0689123ed.png)


#Githubリポジトリを作成する
GitHub desktop を開き、左上の Current Repository  add をクリックし、Add Existing Repository　をクリックします
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617331/47106958-0936-8561-e4b2-7e146442d810.png)
Choose ボタンを押し、アプリを保存しているディレクトリを選択して　Add Repository　ボタンを押します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617331/4f7f6ab0-f065-7d56-2923-ecb2894e567b.png)

ローカルリポジトリは作成できましたが、クローン元と同じリポジトリ名になってしまいました
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617331/bec64792-f6bf-dd0c-c736-18408eb0dfd5.png)



#リポジトリ名(URL)を変更する
※参考にさせていただいた記事
[Gitの設定をgit configで確認・変更](https://note.nkmk.me/git-config-setting/)

viエディッタで git config を編集します


```ruby:ターミナル 
git config --edit  実行
```
viエディッタが開きます
こんな感じです
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617331/fd0311f6-a5a2-cdb8-4013-9cd3983a6c60.png)

```ruby:viエディッタ
「i」キーを押して、インサートモードにします

URLを変更したい名前にします
クローン元の名前　url = https://github.com/Sakagami-Keisuke/nomadcafe.git
今回の名前に修正します　url = https://github.com/Sakagami-Keisuke/nomadcafe-sub.git
```
こんな感じです
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617331/1f369e00-803a-a7a5-8a13-833b8a84243c.png)

```ruby:viエディッタ
「esc」キーを押して編集を終了します
「:wq」キー + enterキーで上書き終了します
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617331/662bcdd5-0a7c-d2e8-fa43-5448cedd2b00.png)
こんな感じです
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617331/f0c2a920-c15f-7cf3-0836-3768f5911993.png)


先ほど Add Existing Repository で作成した、名前を修正したいリポジトリを右クリック Removeで削除します


削除できたら、もう一度、リポジトリを作成し直します
 Current Repository  add をクリックし　Add Existing Repository　をクリック
ディレクトリを選択します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617331/6188a03d-d3ea-23f0-cd05-fe8248c0fac4.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617331/83cc0f07-bd59-a4da-2590-507815093a00.png)

 git config --edit で記述したとおりのリポジトリ名で作成できました
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617331/fbfc0ce8-704f-29fa-1f60-588b9198e434.png)

#リモートリポジトリを作成する
ローカル側（GitHub desktop)はできたので、リモートリポジトリを作ります

Githubリモート　repositoriesページ でNewボタンをクリックします
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617331/734cbba8-1b3f-0922-142f-2ca0be66c86d.png)

・Repository name 欄: "nomadcafe-sub" を入力
・Publicを選択
・Create Repository ボタンをクリックします
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617331/aad0a335-ed92-c826-e56c-82a7b4ad95fe.png)

リポジトリが作成できたのでクリックして入ります
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617331/1aad8119-93e4-78be-a4b0-40b1c3462b9d.png)

これで、ローカルとリモートのリポジトリ名とURLが一致したので、紐づけができたと思われます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617331/bc4831c0-22db-1ffe-0a49-129d48f180b2.png)

READMEをちょこっとだけ編集するなどして、差分を作ってから
Github desktop　で publish branchボタンを押して Push Origin　します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617331/078b9936-763d-1a37-4fa5-7dd2f5c4966d.png)

README  のタイトル
 “個人制作アプリ NomadCafe”　を　“個人制作アプリ NomadCafe-sub”　に変更したものが反映されました
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617331/e2b2cee1-9701-6902-0bfb-81dd96e6f062.png)
これでリポジトリの作成は完了しました

#Dcoker環境をやめて、Rails単体に戻す

今回、以下を削除しました
Dockerを導入した時に追加したものです
・Dockerfile
・docker-compose.yml
・entrypoint.sh
・config/database.ymlの一部記述

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617331/fee78577-2d0d-f4e4-2adf-ea6b85886ec6.png)

こんな感じです
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617331/5fb68516-e88a-95f9-fc3e-886a136ae363.png)



#Rails s エラー：Could not find a JavaScript runtime.

Rails が起動するか確認します

```ruby:ターミナル 
rails s
```
すると以下のエラーになりました

```ruby:ターミナル 
Could not find a JavaScript runtime. See https://github.com/rails/execjs for a list of available runtimes. (ExecJS::RuntimeUnavailable)
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617331/fa6bf022-ea28-cb2a-fda7-e81ca67ecb77.png)


参考にさせていただいた記事
[rails sコマンド実行時に「Could not find a JavaScript runtime.」とエラーが出る場合の対処法](https://qiita.com/azusanakano/items/771dc9919f347de061d7)

nodejsが無いため起こるエラーのようです
以下のコマンドを実行しますが失敗します

```ruby:ターミナル 
yum install nodejs --enablerepo=epel

zsh: command not found: yum

```

```ruby:ターミナル
sudo yum -y update
Password:
sudo: yum: command not found
```

#brew install node

解決に導いてくれた記事
[【開発初心者】macでyumを使いたいのですが、上手くいきません。](https://teratail.com/questions/100312)

```ruby:抜粋
・yumというパッケージ管理ソフトは、 Linuxのディストリビューション（OSの方言）の「Red Hat Linux」や「CentOS」で使われています。 Red Hat社が提供、その傘下で作成、サポートしている
・ AWSのデフォルトイメージでも使われ、日本ではCentOSは強い
・LinuxディストリビューションのDebianやスピンオフ版のUbuntuでは、 yumではなくapt-getというパッケージ管理ソフトが使われている
・ Macの世界ではHomebrewが強く、 CLIツールのパッケージは大抵Homebrewを使えば簡単に導入できる
```

以下のコマンドを実行します

```ruby:抜粋
パッケージがあるかどうか調査
brew info node

node: stable 8.9.0 (bottled), HEAD
Platform built on V8 to build network applications

発見したのでインストール
brew install node
```
こんな感じです
nodeのインストールができたようです
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617331/e4946248-33b5-ca40-0e4b-92aa363eda42.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617331/6d6557be-5035-bf70-a51e-6968a9554c96.png)

Rails の起動を確認します

```ruby:ターミナル 
Rails s 
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617331/6e4a3345-d645-955d-42f2-90959f9d48cc.png)
localhost:3000にアクセスします


#ActionView::Template::Error (Asset `application.css` was not declared to be precompiled in production.Declare links to your assets in `app/assets/config/manifest.js`.

すると今度は下記のエラーでした

```ruby:ターミナル 
ActionView::Template::Error (Asset `application.css` was not declared to be precompiled in production.
Declare links to your assets in `app/assets/config/manifest.js`.

  //= link application.css
and restart your server):
     7:     %title Nomadcafe
     8:     = csrf_meta_tags
     9:     = csp_meta_tag
    10:     = stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track': 'reload'
    11:     %script{:src => "https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"}
    12:     = javascript_include_tag 'application', 'data-turbolinks-track': 'reload'
    13: 
  
app/views/layouts/application.html.haml:10:in `_app_views_layouts_application_html_haml___4171163319812110299_70145880673400
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617331/c3643d30-d14b-da38-688b-8a15005c44b1.png)


解決に導いてくれた記事
[Sprockets::Rails::Helper::AssetNotPrecompiled in が出てコケた](https://qiita.com/sanriyochan/items/99d63e8a8691eb29fa4c)

config/initializers/assets.rb に下記の記述をします


```ruby:ターミナルconfig/initializers/assets.rb
#省略
Rails.application.config.assets.precompile += %w( application.css )
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617331/1fe94f0d-1d83-687e-5507-3bdda9a5c538.png)

次のコマンドを実行

```ruby:
rake assets:precompile
```

Rails の起動を確認します

```ruby:
$rails s
```
こんな感じです
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617331/d4b76750-8ade-fc58-4b56-c110a8ebf02f.png)

localhost:3000にアクセス
無事、アプリが起動しました！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617331/04e8c3dc-ead9-f70d-7158-27a6e15f1639.png)


#最後に
当方、 実務未経験＋初学者＋テッ○キャンプ卒業＋転職活動中であります。
パッケージ、yum、brew、github、まだまだ経験不足でハマりました。
同一リポジトリでdockerを外す、環境を戻すことはケースとして起きにくいと思いましたが、なかなか事例が見当たらなかったので、ご参考までに投稿することにしました。

今回削除したDokerのセッティングは下記になります。
[②Dockerを初めて導入してRails sする (2020.4時点)](https://qiita.com/SakagamiKeisuke/items/d64ee54c22378223659a)

今後も、学んだことをなるべくわかりやすく投稿したいと思います。
ありがとうございました。