Ruby on Rails開発のインターン (Day 6)

こんにちは、皆さん!

今日は30分遅刻なので、終わるのも30分遅くなりそう...
今日の内容はメモリリークの処理だから難しそう
(更新)結局この記事ではメモリリークに触れるところまではいきませんでした(笑)

  • トピック:
  1. cherry-pickでコミットだけを今のブランチに
  2. cherry-pickpull?はどう違うのか
  3. 使いやすいseed.rbファイルの書き方


  • 疑問:


  • 問題:


  • 学習した内容:
  1. git cherry-pickコマンド
  2. cherry-pickpullの違い
  3. 整っていて応用性の高いseed.rbファイル
  4. database_cleanerでテスト後のデータベース自動掃除
  5. コマンドの代わりにRails.application.load_seedで自動でデータを読み込む


  • 今後やりたいこと:
  1. 上記のseed.rbファイルを自分で実行する
  2. cherry-pickpullの違いについて動画を作る


  • リソース:
  1. Git - git-cherry-pick Documentation
  2. You mean the difference between a pull and a cherry-pick? I've been a user of gi... | Hacker News
  3. What does cherry-picking a commit with git mean? - Stack Overflow
  4. GitHub - DatabaseCleaner/database_cleaner: Strategies for cleaning databases in Ruby. Can be used to ensure a clean state for testing.


cherry-pickでコミットだけを今のブランチに

このテクニックは他の人と共同でプログラムを作っている時に役に立つ
以下のコマンドで特定のコミットだけを今のブランチに反映させることができる

$ git cherry-pick [commit hash]

どこから引き取ったコミットなのかを以下のコマンドで付け足すことができる(強制ではない)

$ git cherry-pick -x [commit hash]


cherry-pickpull?はどう違うのか

リソース: You mean the difference between a pull and a cherry-pick? I've been a user of gi... | Hacker News

***この部分に関しては正直100%正しい自信がないので間違ってたら教えてくれると嬉しいです***
pullは指定したブランチのすべてのコミットをターゲットのブランチに反映させる。しかし、時にそういうことはしたくないときがある。オープンソースを作るだ。この時様々な人がいろんなコミットを反映させようとする。だが、本当に欲しいのはそのうちのいくつかのコミットだけでしょう。だからそのコミットを指定してcherry-pickで反映させる。

使いやすいseed.rbファイルの書き方

職場でものすごく使いやすいseed.rbファイルを見たので、軽くシェアするぜ!
同じものは貼れないので適当に自分で作った簡単なものを載せます

def seed_user
    User.create(name: "anonymous", email: "anonymous@example.com")
end
def seed_admin
    User.create(name: "admin", email: "admin@example.com", admin: true)
end

case Rails.env
    when "development"
        seed_admin
    when "test"
        seed_admin
        seed_user
end

Userモデルがあるとして、上記のようなseed.rbを作る。
そうすると、ローカルとテストの時両方において、管理者(admin)は存在するが、ユーザーはテストの時にだけ読み込まれる。
このように、関数を使ってどのデータを読み込むのか指定すること状況において、必要なデータを読み込む関数を実行するかどうか指定するだけだから修正しやすい。

まとめ

今日は結構のんびりした日。あまり進んだ気がしない。まあ、個人的にはいろんな発見があった気がする。seed.rbの新しい使い方とかgitの新しいコマンドだったり。次は実際に自分で使ってみて、頭に入れなきゃ!
明日はもっといろんなもの学べるといいなーー


ご精読ありがとうございました。では、また次回まで✌




Day 7はこちら↓↓
programming-shop.hatenablog.com


Day 5はこちら↓↓
programming-shop.hatenablog.com