Webアプリケーション作成コマンド

# 【初学者の備忘録】
Webアプリケーションを作成する時に使用したコマンド一覧です。


## 使用頻度の高いコマンド
- ディレクトリ移動<br>`$ cd`
・ディレクトリの移動：`$ cd ディレクトリ名`
・カレントディレクトリから一つ上の階層へ移動：`cd ..`
・前回のディレクトリへ移動：`cd _`
- サーバー立ち上げ<br>`$ rails s`
- パスの確認<br>`$ rails routes`
- シードをデータに追加<br>`rails db:seed`
- 過去のコマンド閲覧<br>`history`
- Gemインストール<br>`$ bundle install`


## Rails雛形作成（環境ディレクトリ）
- アプリケーション作成<br>username:~/environment `$ rails new アプリケーション名`
- アプリケーション削除<br>username:~/environment `$ rm -rf アプリケーション名`
- プラグイン（拡張子）追加<br>`$ yarn add @babel/plugin-proposal-private-methods @babel/plugin-proposal-private-property-in-object`
![スクリーンショット 2023-09-16 11.59.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3503032/4f33c4af-6e12-fecc-f2fb-f1b6e1f47b50.png)
こんなエラーが出たらプラグインがインストールされていない可能性を疑おう。
<details>
  <summary>補足</summary>
＊　コマンドではありませんが、アプリケーション作成でホスト許可をしないといけないのでここに記述します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3503032/4ec9fbbf-db4b-4fb2-d9e7-6ddb4c3fb049.png)
ホスト許可をしないとこのようなエラーが起こります。
`アプリケーション名/config/environments/development.rb`の一番最後の行のendの上あたり
`config.hosts.clear`を記述。これによってどんなホストからでもアクセスできるようになります。
</details>


## Controler作成（作業ディレクトリ）
Controlerの作成方法は複数あります。用途によって使い分けましょう。<br>命名規則として複数形。modelの名前の複数形のかたち。（コントローラ名の後にviewも一緒に記述することで同時に作成できる。）
- 基本的なcontroler作成<br>`$ rails g controller コントローラ名`
- namespaceを使用したcontroller作成<br>`$ rails g controller [namespaceのグループ名]/[コントローラー名]`
<details>
  <summary>補足</summary>
  namespaceとは・・・決めた名前でルーティングのグループ分けをするための仕組みです。<br>
  例えばEC2サイトなどは管理者側と顧客側があります。管理者側と顧客側はcontrollerを分ける必要があるのでグループ名に”admin”や”user”など名前をつけてあげる。namespaceを使用すると他にもやらなければならないことやルールがあるがここではここまでに留めておきます。<br>
  癖があるところはルーティングだと思うので参考URL：<a href="https://qiita.com/ryosuketter/items/9240d8c2561b5989f049">https://qiita.com/ryosuketter/items/9240d8c2561b5989f049</a>
</details>


## Model作成（作業ディレクトリ）
Model作成のコマンド。Modelの名前によってコントローラ、テーブルが関連づきます。<br>Modelの命名規則は大文字から始まる単数型。（モデル名の後にデータ型、カラム名を記述すると一緒にカラムも生成できる）

- model作成<br>`$ rails g model モデル名`
- マイグレーションファイルからテーブル作成<br>`rails db:migrate`
- マイグレーションステータス確認<br>`$ rails db:migrate:status`<br>マイグレーションファイルはUP,DOWNの状態があり、DOWN状態でないとカラムの追加や削除ができないので確認するコマンド
- マイグレーションリセット<br>`$ rails db:migrate:reset`<br>＊マイグレーションファイルを全てDOWNする。マイグレーションリセットをすると全てのデータが消えるので注意
- マイグレーションロールバック<br>`$ rails db:migrate:status (STEP=数字)`<br>＊目的のマイグレーションファイルまでのマイグレーションファイルをDOWNにする。直前のマイグレーションファイルをDOWNしたい時はSTEPは省略できる。ただしDOWNにしたマイグレーションファイルのデータは消えるので注意
- カラムの追加<br>`rails g migration Addカラム名Toテーブル名 カラム名:型名`<br>＊実行することでマイグレーションファイルをDOWNすることなく追加できるのでデータが消えることはないが、新しいマイグレーションファイルも一緒に追加されてしまいます。
- カラムの削除<br>`$ rails g migration Removeカラム名Fromテーブル名 カラム名:型名`

## Git（作業ディレクトリ）
- ローカルリポジトリ作成<br>`$ git init`
- Githunとの紐付け：名前<br>`$ git config --global user.name　"Githubユーザー名"`<br>Githubユーザー名をない状態のコマンドは確認コマンド
- Github紐付け：Email<br>`$ git config --global user.email "GithubEmail"`<br>GithubEmailがない状態のコマンドは確認コマンド

<details>
  <summary>補足</summary>
  コントリビューションに草が生えない場合はブランチ名が違う（mainブランチでないとダメ）やemailが違うなど幾つか条件が存在しますが、大抵emailが登録されていない場合が多いです。（私自身の感想です）<br>参考資料：https://zenn.dev/cyaroya/articles/7e281e730791a1
</details>

- ローカルリポジトリとリモートリポジトリの紐付け<br>`$ git remote add origin リモートリポジトリURL`
- ローカルリポジトリとリモートリポジトリの紐付けを間違えた場合<br>`git remote set-url origin リポジトリURL`
- ローカルリポジトリブランチをmainブランチに変更<br>`$ git branch -M main`

- インデックスに追加<br> `$ git add ~`
git addの後にファイル名をつけるとファイルごとピリオド（.）だと変更ファイル全て。-Aはすべてのファイルを更新。
-ローカルリポジトリに追加<br>`$ git commit -m "コミット名"`

<details>
  <summary>補足</summary>
  コミット名はわかりやすくした方がいいので "[何をしたか] 情報" みたいな記述がおすすめです。何をしたかというのは追加や修正、更新などです。<br>参考URL：https://qiita.com/itosho/items/9565c6ad2ffc24c09364
</details>

- リモートリポジトリへ追加<br>`$ git push origin ブランチ名`
- Gitの状況確認<br>`$ git status`
- インデックスと現状の差分<br>`$ git diff`
- commit履歴<br>`$ git log`
- commit履歴に基づいて状況を戻す<br>`$ git reset コミット`<br>コミットのところには識別番号を記述します。
・コミットをHEAD^と記述することで直前に戻れます。


## ブランチ
- 新しいブランチ切り替え<br>`git checkout -b 新しいブランチの名前`<br>*ブランチを切り替える際はgit sutatusで確認した方がいい<br>*-bを抜いたコマンドで既存のブランチに戻れます。
- 最新状態にマージ<br>`git pull origin ブランチ名`<br>＊コンフリクトが起こる可能性があるので注意。起きた場合git diffして差分確認。git logでしっかりpullされているか確認もした方がいいです。


## デプロイ
- 秘密キーの確認などに使用可能<br>`ls -la ~/.ssh/`
- SSHにログイン<br>`ssh -i ~/.ssh/秘密キー.pem ec2-user@xx.xx.xx.xx`
*クラウド９のターミナル
【SSHのターミナル】
- Gemファイル追加、変更があった場合<br>`bundle install --path vendor/bundle --without test development`
- CSSを変更した場合<br>`bundle exec rails assets:precompile RAILS_ENV=production`
-　マイグレーションファイルを変更した時（追加は別）<br>`bundle exec rails db:migrate RAILS_ENV=production`
-　RailのKill<br>`sudo kill $(cat tmp/pids/puma.pid)`
-　Railsの再起動<br>`bundle exec rails s -e production`
-　 nginxの再起動<br>`sudo service nginx restart`
-　 過去のエラーログ確認<br>`sudo vi log/production.log`
【MySQlでログイン】
- データベース一覧<br>`SHOW DATABASES;`
- データベースに接続<br>`connect shugendo;`
- テーブル一覧<br>`SHOW tables;`
- カラム一覧<br>`SHOW columns from テーブル名;`
- マイグレーションリセット<br>`bundle exec rails db:migrate:reset RAILS_ENV=production DISABLE_DATABASE_ENVIRONMENT_CHECK=1`
- seed追加<br>`bundle exec rails db:seed RAILS_ENV=production`


## Rubocop導入
- 違反確認<br>`$ bundle exec rubocop`
- ファイル単位で違反確認<br>`bundle exec rubocop -a {解析対象ファイル}`
- フォルダ単位で違反確認<br>`bundle exec rubocop -a {解析対象フォルダ}`
- 警告が出た場合の修正<br>`$ bundle update --bundler`
- 違反修正<br>`$ bundle exec rubocop -a`