tusbasaのブログ

業務や勉強中に調べたことを自分用にメモするブログ

2021-05-01から1ヶ月間の記事一覧

【rspec】itsについて

subject { Customer.new_by_entity(entity) } its(:house_company_code) { is_expected.to eq entity.house_company_code } itsで expect(Customer.new_by_entity(entity).house_company_code).to eq entity.house_company_code と同じことになる 参考 http:…

【mysql】collations

照合順序 文字コード+言語名+比較法で構成される 例) utf8mb4_unicode_ci sql実行時にcollateを指定することでオーバーライドすることもできる。 その場合文字コードが違う場合はオーバーライドできない。 unicode の方はあいまいな照合が可能で全角、半…

【Mysql】show processlist;

実行したsqlが表示される。 参考 https://takami-hiroki.hatenablog.com/entry/20101027/p1

【rails】イニシャライザファイルについて

具体的には、フレームワークの読み込み&gemの読み込みが終わったタイミングで読み込まれます。 開発環境・テスト環境・本番環境全てで読み込まれます。 gemを入れるとそのgemの設定ファイルが追加されたりします。自分で.rbファイルを作成して追加すること…

【rails】rack_mini_profiler について

ページが表示される際にどこにどのくらいの時間がかかっているかを表示してくれるgem 参考 https://nishinatoshiharu.com/usage-rack-mini-profiler/

【rails】キャッシュについて

railsにはページキャッシュ、アクションキャッシュ、フラグメントキャッシュがある。 ページキャッシュ、アクションキャッシュはあまり使われずgemとして切り出されてdefaultでは使用できない。 参考 https://postd.cc/the-complete-guide-to-rails-caching/

ActiveRecord::Relationについて

クエリを生成するための条件を持っておいて必要に応じてSQLクエリを実行する。 その結果からオブジェクトを作成してくれる。 参考 https://spirits.appirits.com/doruby/8831/

【Mysql】結合の順番

駆動表と内部表はオプティマイザの判断により入れ替わる。 SELECT count(*) FROM `cars` INNER JOIN `parts` ON `parts`.`car_id` = `cars`.`id` 上記sqlでも場合によってpartsが内部表になることもある。 explainで最初の行が駆動表。 参考 https://enterpr…

【rails】joins

joinsは内部結合 どちらかのテーブルにしかないレコードは除外される

【rails】eager_loadとpreload

join先のテーブルでwhere句を使いたい時はeager_loadを使う 参考 https://love-and-geek.caraquri.com/back-end-rails-slow-query/

【設計】共通化ではなく関数化

共通化せず、分けることが重要です。同じ操作の箇所はそこを関数化することで、重複した処理を書かずに済みます。 無理に共通化しようとすると一つのメソッドで書けるかもしれないが複雑になりがちで機能追加などの際にメンテナンス性が悪くなる。 参考 http…