![見出し画像](https://assets.st-note.com/production/uploads/images/97036004/rectangle_large_type_2_49e73c1382aef192333be7215a47e164.png?width=1200)
フィヨルドブートキャンプで学習した1ヶ月
はじめに
2022年12月1日〜2023年1月10日までの約40日、フィヨルドブートキャンプにて学習させていただきました!
その中で初めて知ったことなどを備忘録的にメモしていきます。
本当は、自分の言葉で書けるのが一番良いのですが、そこまでの余裕がないので列挙する形になります。
フィヨルドで勉強して特によかったことは、
日頃レビューしてもらえない人にレビューしてもらえる
コミュニティが広がる
です。
メンターの皆さんは会社でレビューしてもらうのとはまた違う観点でみてもらえたので新しい学びがたくさんありました。そして、何よりコードだけをみてレビューしてくださるのが何よりも嬉しかったです。
私が誰かなんて関係ない。コードだけに向き合ってくれるのが嬉しかったんです。
そして、何よりコミュニティがさらに広がった感じがしました。
Ruby や Rails 界隈のコミュニティに参加していますが、フィヨルド自体が1つのコミュニティになっていて、新しいつながりもたくさんできました!
いつか RubyKaigi などで皆さんとお会いできると嬉しいです。
皆さん、本当にお世話になりました。
また、卒業式にオーディエンスとして参加してみたのですが、これが本当にエモくて。。。。
なんか泣きそうになりました。
苦労された点もたくさんあったんだなと感じました。
これだけのカリキュラムをこなして卒業される方は本当にすごいです。
Ruby と Rails 関連での学び
debug gem は良い
binding.irb は gem を入れなくても使えるデバッグツール
erb_lint という html.erb を用の linter がある
module はいろんなクラスで使われる部品を置いておくところ
rails/info/routes で routing の一覧がブラウザで見られる
Gemfile でバージョン指定するときに使う ~> はマイナーバージョンまでの固定でパッチバージョンのアップデートは許可した書き方である
DB に unique 制約をかけたいときは add_index
String#ljust で左揃えができる https://docs.ruby-lang.org/ja/latest/method/String/i/ljust.html
ActiveRecord の scope https://railsguides.jp/active_record_querying.html#%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%97
Enumerable#each_slice で任意の数にまとめて配列にして返してくれる https://docs.ruby-lang.org/ja/latest/method/Enumerable/i/each_slice.html
ActiveRecord は各カラムの getter と setter のメソッドを生成してくれるので、自分で attr_accessor を書かなくて良い(むしろ書くと AR の実装を上書きしてしまう)
string から symbol への変換は String#to_symbol でできる
ブロックのフラットスコープ https://qiita.com/HiroyukiYagihashi/items/e52f81220bfcbb688edf
コマンドラインのオプションを使うためのライブラリとして optparse というものが存在する https://docs.ruby-lang.org/ja/latest/library/optparse.html
AR でテーブル同士を join させるにはアソシエーションを貼っていないと fk を貼っているだけではダメである
コマンドライン引数を使う方法 https://maku77.github.io/ruby/command-line-params.html
ARGFはコマンドライン引数やコマンドラインオプションを扱うクラス https://docs.ruby-lang.org/ja/latest/class/ARGF=2eclass.html
ActiveStorage で N+1 を避けるために scope が実装されているのでこれを使うと N+1 を避けることができる https://github.com/rails/rails/blob/675264a4493586794c942acf3d9db896fd9453f2/activestorage/lib/active_storage/attached/model.rb#L73
AR で inverse_of を使うと双方向の関連付けを明示的にすることができる https://railsguides.jp/association_basics.html#%E5%8F%8C%E6%96%B9%E5%90%91%E9%96%A2%E9%80%A3%E4%BB%98%E3%81%91
IO#read で制限をしなければ最後まで読んでくれる
クラスメソッドはクラスから直接参照できるメソッド(<=> インスタンスメソッド。生成したインスタンスを通して参照できるメソッド)
M1 Mac だと sqlite3-ruby の gem が version によってエラーになってしまうことがある
v1.5.0 だと修正されていそう
https://github.com/sparklemotion/sqlite3-ruby/issues/313
その他の学び
シェバンは指定の言語で実行するためのおまじない
man コマンドはマニュアルを表示するときに使う
nginx はサーバー上にアプリケーションを組み込めないということだったが、だから Rails で puma を動かしてそれを nginx で動かす
Nginx に静的ファイルを配置してアクセスできるようにする方法
https://nginx.org/en/docs/beginners_guide.html#staticNginx の1つの server 設定で http も https も対応できる
https://nginx.org/en/docs/http/configuring_https_servers.html
12月1日〜1月10日の学習の記録
![](https://assets.st-note.com/img/1674528593724-7S2vnIL5Vh.png?width=1200)
![](https://assets.st-note.com/img/1674528637314-WD5aSEd7pJ.png?width=1200)
![](https://assets.st-note.com/img/1674528658924-xbsdSbNtAS.png?width=1200)
![](https://assets.st-note.com/img/1674528675375-3UxLVbqRgj.png?width=1200)
![](https://assets.st-note.com/img/1674528689840-V8HwqQu3Ir.png?width=1200)