Rails個人開発メモ

現在進行中の[ユーザー登録機能を持たない掲示板の開発](https://github.com/Hiro710/toy_chat)にて初歩的ミスや忘れやすい事など記しておく。
あくまでも個人用。
今後ここに色々と追加予定。


# Git

バージョン管理を行う為トピックブランチ(別ブランチ)を作成する。
以下の様に打つ事で新規ブランチが作成されると同時に現ブランチから新規ブランチに切り替わる。

```terminal
# XXXは新規作成したい任意のブランチ名
$ git checkout -b XXX

# 既存のブランチへ切り替えたい時は以下を使う(YYYは任意のブランチ名)
$ git checkout YYY
```

mainブランチにマージする

```terminal
$ git add -A
$ git commit -m "hogehoge"
$ git switch main
# ここで$ git branchでmainブランチに切り替わっているか確認した方がいいかも
$ git merge (マージしたいブランチ名)
$ git push
```

$ git commit -am "hogehoge"でaddとcommitを同時に実行できるがうまくコミットされない時があるので別々で実行した方がいいかも。
mainブランチに切り替えずにリモートへpushするとエラーになる。

困ったら↓

https://dev.classmethod.jp/articles/git-move-change-to-another-branch/

https://backlog.com/ja/git-tutorial/


Gitのバージョンをアップグレードする（Windows版）

```terminal
$ git update-git-for-windows
```

gitブランチ名は時間が経過して後で見返しても理解できるように簡潔かつ、明瞭な名前をつけると良い。

多少長くても良い。逆に短すぎて後で解りにくくなるよりはマシ。

gitブランチの削除方法(ローカル&リモート)

安全なのは前者。

リモートブランチは「remotes/origin/ブランチ名」で区別される。

```terminal
# 【ローカルブランチ削除】
# マージされていなければ実行中止してエラーを出す
$ git branch　-d ブランチ名

# マージされていなくても削除する
$ git branch　-D ブランチ名
--------------------------------------
# 【リモートブランチ削除】
# 既存ブランチの確認 (ローカル・リモート両方)
$ git branch -a

# リモートブランチ削除
$ git push --delete origin ブランチ名
```


https://zenn.dev/koniman/articles/2d7aa7dcdf6d5c806cf6


# Rails

docker上でrails環境を使用している場合のcontrollerコマンド。
$ docker-compose upでコンテナを立ち上げた後で実行。
コントローラ名は必ず**複数形**で命名する事。
**「$ docker-compose exec〜」はDockerコンテナが起動している時に使用するコマンド**

```terminal
$ docker-compose exec web rails g controller Hoges index
```

コントローラ名を間違えた時は以下のコマンドを使って削除する。
dはdestroyの省略形。

```terminal
$ docker-compose exec web rails d controller Hoges
```

docker上でrailsアプリ開発している際の基本コマンド。
以下の$ 〜webの後に続いてrails g 〜という様に入力すれば良い。

```terminal
$ docker-compose exec web (railsで使うコマンド)
```

Railsのマイグレーションの変更を元に戻す方法

以下は[サイト](https://gist.github.com/seak0503/84bfa6b37a0a6961c334)から抜粋

```terminal
# 一つ前まで戻す
$ bin/rake db:rollback

# 任意のファイルまで戻す
# 現在地を含めた○個前までなかったことにしてくれる
# ○+1個前のファイルまで実行された状態
$ bin/rake db:rollback STEP=○

# migrateが適応されていないファイルを確認
$ bin/rake db:abort_if_pending_migrations

# migrateで適応
$ bin/rake db:migrate
```

**Dockerが起動した状態でlocalhost:3000にアクセスできない**

**ActiveRecord::PendingMigrationError
Migrations are pending. To resolve this issue, run:
bin/rails db:migrate RAILS_ENV=development が表示された時の対処法**

```terminal
$ docker-compose run web rails db:migrate
```

上記の対処法と併せて以下も確認するとよい

https://qiita.com/yusuke_s221/items/142501c6c00b5319be8d

DBマイグレーションファイルを削除する方法

https://qiita.com/ISSO33/items/33a935cb3255c269bef2

データベースのカラムにindexを追加する方法

https://forest-valley17.hatenablog.com/entry/2018/09/12/163849


railsカラム名変更方法

https://qiita.com/libertyu/items/93acd8733e34b1d0a63c


rake db:seedを使った初期データ作成方法

```./db/seeds.rb
# coding: utf-8

# 基本形
# モデルクラス名.create(:カラム名1 => 値1, :カラム名2 => 値2, ...)

# 例
User.create(:name => 'Foo Bar', :age => 20, :sex => 'man')
User.create(:name => 'John Alen', :age => 18, :sex => 'man')
User.create(:name => 'Jaminn Bey', :age => 25, :sex => 'woman')
```

データ入力ができたら以下のコマンドを実行すると初期データがDBに登録される。

```terminal
$ rake db:seed
```

参考にしたサイト

https://www.javadrive.jp/rails/model/index10.html


railsモデルの作成と削除
Userモデルを例にする。

```terminal
# 作成
$ rails g model User name:string

# 削除
$ rails d model User
```

https://qiita.com/s_tatsuki/items/900d662a905c7e36b3d4


モデル名とテーブル名の規約

https://railsdoc.com/model

データを一覧表示する時の並び替えについて
最新順：DESC、最古順：ASC

https://zenn.dev/mimiki/articles/1007ac00c2ef28

https://zenn.dev/goldsaya/articles/08d7e26c813842

railsヘルパーメソッドについて

https://qiita.com/Shugo_Y/items/412d7660f259eddf9c66\

f.selectで選択メニューを生成する

https://qiita.com/ATORA1992/items/fc6217412c5bc004ac6c

i18nを使った日本語化について

https://qiita.com/shimadama/items/7e5c3d75c9a9f51abdd5

railsテスト関係

https://qiita.com/jnchito/items/42193d066bd61c740612

https://zenn.dev/jinwatanabe/articles/bd2b238500c3068c660f

https://zenn.dev/igaiga/books/rails-practice-note/viewer/rails_rspec_workshop

https://qiita.com/takaesu_ug/items/db44b81bdddf6ed0e9f5

画像アップロード方法

https://plog.kobacchi.com/rails7-activestorage-images-drag-and-drop-preview/

Rails 投稿日時表示方法

https://zenn.dev/sn_fk_popo/articles/1b152923a4cdd5

既存のモデルに属性を追加する方法
詳しい方法などは[こちら](https://railsguides.jp/active_record_migrations.html#%E6%96%B0%E3%81%97%E3%81%84%E3%82%AB%E3%83%A9%E3%83%A0%E3%82%92%E8%BF%BD%E5%8A%A0%E3%81%99%E3%82%8B)

`基本形： rails g migration add_〇〇_to_モデル名の複数形 追加したい属性名:型指定`

```terminal
# 例としてUsersモデルに追加
# 以下の様にマイグレーションを追加する
$ rails g migration add_hogehoge_to_users foo_bar:string

# DBへの反映も忘れずに
$ rails db:migrate
```



# Docker

```terminal
# exec はコンテナが起動している時に使用するコマンド
$ docker-compose exec hogehoge 〜
```

https://qiita.com/hokita222/items/49f4ca54835e08fdd6b2

https://qiita.com/aiyu427/items/03d6ceb259e44c6fb4e4


# CSSフレームワーク

https://www.tohoho-web.com/ex/css-framework.html#new-css

https://qiita.com/degudegu2510/items/81ebca28e2d2c4b9c21d


# 個人開発全般

非常に有益な記事

https://qiita.com/tkdayo/items/5701013735c667d4cf03

https://techblog.hubbit.io/2021/01/12/4ruby-on-rails-taskapp-crud/