【minitest】input要素の文字列はvalue属性の値を検証しなければならない

結論 input要素で表示されている文字列の検証はvalue属性の値を検証する必要がある。 input要素のvalue属性の値の検証は、[value='値']で検証対象を取得できる textarea要素の文字列の検証は、text: 'テキスト' でタグで囲まれた文字列を検出できる input要…

Turboを使ったRailsのシステムテストではJavaScriptの処理完了のタイミングに注意

test-unitでのシステムテストでちょっとハマったのでメモ。 症状 テスト実行時にログイン処理が不安定(ログインできる/できない)という症状が発生。 class BooksTest < ApplicationSystemTestCase setup do @book = books(:one) # ログイン処理 visit root_u…

Chromeでフルスクリーンのスクリーンショット(キャプチャ)を撮影する

Chrome DevToolsを使用してフルスクリーンのスクリーンショット(キャプチャ)を撮影する方法。 この方法で縦スクロールのページも撮影できる。 手順 DevTools起動 レスポンシブ設定をResponsive に設定 右上の3点リーダーのCapture full size Screenshot で撮…

test-unitについて

test-unitの基礎知識。 test-unitとは? Ruby標準のテスティングフレームワーク minitestと互換性有り 単体テスト 単一のプログラム部品(モジュール)を対象としたテスト クラス、メソッド、関数などの最小単位が対象 問題の早期発見が目的 モジュール単位の動…

配列同士の比較はSetを使うと順序の考慮が不要になる

バリデーションの実装で配列同士の比較で要素の順序を考慮せず比較する方法としてSetを教えてもらいました。 結論 Rubyでは集合を表すSetを使うことで配列の順序の考慮が不要になる。 class Set (Ruby 3.2 リファレンスマニュアル) Set(集合)とは? RubyのSe…

テスト駆動開発について

テスト駆動開発の基礎知識。 TDDとは テスト駆動開発 ゴールは「動作するきれいなコード」 テストファーストで開発を進める アジャイル開発で普及している 品質を担保することが目的ではない 安心して開発することが目的 汚いコードとは 以下が含まれている…

テスト技法について

テスト技法の概要メモ。 ソフトウェアテストやテスト技法の概要 ソフトウェアテスト ソフトウェアが想定通りに動作するか評価、検証すること 仕様通りに機能が動作するのかのチェック ソフトウェアテストの7つの原則(JSTQBのシラバスに記載) テストは欠陥が…

Rubyの&:の意味

結論 ブロック処理をより完結に書ける記法。 インスタンス.{ |ブロックパラメータ| ブロックパラメータ.メソッド名 } を(&:メソッド名) で書ける &:メソッド名 で記述するには特定の条件がある 通称は「あんころ」らしい。 記述例 文字列の入った配列をupcas…

Railsのポリモーフィック関連付けについて

ポリモーフィックとは 1つのモデルが他の複数のモデルに属していることを、1つの関連付けだけで表現できます。 一つのモデルを同じインターフェースを持ったものが扱う(ダックタイピングする) ポリモーフィックとは1つのモデルで関連付いた複数のモデルの…

【React】ContextのProviderは正しく囲まないとコンテキストが分岐する

Contextを使用する際のProviderの指定を間違うと共有したはずのコンテキストが子コンポーネント毎に分岐してしまうので注意が必要です。 サンプルコード 以下のようなContextを使って子コンポーネントにログイン情報を共有するコードを例にします。 //Contex…

JavaScriptでlocalStorageを使う

JavaScriptでlocalStorageを使う方法を調べました。 localStorageとは Window.localStorage - Web API | MDN ブラウザにデータを保存させる機能。 保存期間に制限が無い セッションに似ている セッションはブラウザを閉じたらデータは消去される 保存領域はU…

Railsアプリケーションの規模感の掴み方

既存のRailsアプリケーションの規模感を掴むためのメモです。 各ファイル毎に見ていくと規模感が掴むきっかけになりそうです。 rails routes エンドポイント、URLの雰囲気を掴む。 テキストに落とすと見やすい rails routes > ファイル名 で出力結果をファイ…

Reduxの日本語ドキュメントの自分用メモ

Reactに引き続きReduxのキャッチアップが必要になりました... 日本語のドキュメントを読んで必要そうなとこだけまとめた自分用メモです。 間違い、分かりにくい部分がたくさんあるはずです。 Redux自体少し古い技術っぽいので参考にならない部分が大いにある…

React公式ドキュメントの自分用メモ

Reactのキャッチアップが必要になったので公式 を一通り読んだことをまとめました。 自分用のメモなので間違い、分かりにくいところがたくさんあると思います。 Hello World Reactを触る上での最低限のポイント。 let、const で変数を定義する(var と等価) …

ソースコードを読むためのポイント

仕事で全然ソースコードが読めず、大変なのでソースコードの読み方を自分なりにまとめてみた。 ソースコードを読むとは 良く分かっていないが多分次のようなことだと思う。 プログラムの意味をイメージできること プログラムを書いた人の意図をイメージでき…

【Rails】Git管理せずにRails newしたい

Git管理せずにrails new したかったので方法を調べました。 結論 rails new 時にG (--skip-git)オプションを付与する。 $ rails new アプリ名 -G $ rails new アプリ名 --skip-git # -Gと同じ rails new 時はデフォルトでGit管理が自動で行われる仕様になっ…

コマンドラインでよく使うコマンドまとめ

コマンドライン(ターミナル、コンソール)でよく使うコマンドを整理しました。 表の中の「覚えるヒント」については自分なりに覚えやすいように無理やりひねり出したもので、公式な情報ではありませんので参考程度にしてください。 移動系 動作 コマンド 覚え…

【Rails】migrationファイルを削除してしまってロールバックできない時の対処法

ロールバック前にマイグレーションファイルを削除してしまいロールバックできなくなってしまったので対処法を残しておきます。 そもそもちゃんとコミットを残しておけばgit checkout するだけでokなので、こまめなコミットを積んでおくの大事です(自戒)。 結…

【Mac】FinderでiCloudが同期しなくなった時の対処

突然Finder内のiCloudが同期しなくなり、解決までちょっと時間が掛かってしまったので対処方を記録しておきます。 原因はよく分かっていませんが割と良くあること(?)のようなので色々試して解決しない場合は試してみてください。 結論 「セーフモード」でMac…

【Rails】DHH流のコントローラ分割について

コードレビューでコントローラ分割のアドバイスを頂いたのでDHH流のRailsのコントローラの分割について調べました。 DHH流のコントローラ分割とは? コントローラが元々持っているRESTアクションやデフォルトの5つの機能にはないメソッドを付け加えたいと思…

【GitHub】コードレビュー時のコメントの追加と返信の流れ

GitHubを使ったコードレビュー時のコメントの追加と返信のやり方が曖昧だったのでまとめました。 セルフレビュー時にコメントで補足情報を追加する レビュワーに良いアドバイスをもらうためにセルフレビュー時に補足情報をコメントすることでレビュワーに意…

RubyとRailsの?系メソッドのまとめ

メソッド名の末尾に?が付くメソッド(勝手に?系メソッドと呼びます)がたくさんありすぎてよく分からなくなったのでまとめました。 Ruby Rubyのメソッド。true/falseを返します。 nil?: オブジェクトがnilか? empty?: インスタンス(配列、ハッシュ、文字列等)…

M1 macでRubyインストール時のBUILD FAILEDエラーの解決法

RubyをM1 macにインストールする際にBUILD FAILED が表示されインストールできなかったので解決法を調べました。 結論 下記コマンドでインストールできる。 $ RUBY_CFLAGS="-w" rbenv install x.x.x 原因とエラー詳細は後述します。 環境 今回インストールし…

【Rails】フォロー機能の設計と実装

フォロー機能の設計から実装までの情報を整理しました。 実現したいこと 次の2つの機能を実装したい。 自分以外のユーザーをフォローできる フォローしているユーザー 、フォローされているユーザー を取得できる フォロー機能のテーブル設計 上記のフォロー…

【Ruby】ぼっち演算子とは?

ぼっち演算子の使い方をすっかり忘れていたのでまとめておきます。 結論 ぼっち演算子&. とはレシーバーがnil だった場合にNoMethodError ではなくnil を返すRubyのメソッド呼び出しの演算子です。 メソッド呼び出しで .の代わりに &.を使うことができます。…

rails g controllerでディレクトリを指定してファイルを作成する

rails g controller でディレクトリを指定してファイルを作成したかったのでやり方を調べました。 結論 指定するディレクトリを/ か:: で区切って指定する。 $ rails g controller ディレクトリ名/コントローラ名 アクション名 $ rails g controller ディレ…

【Rails】orderメソッドの使い方

order メソッドで並び替えする必要が出たので使い方を調べました。 orderメソッドとは? 取得したレコードを特定のキーで並び変えるメソッド。 Active Record クエリインターフェイス - Railsガイド orderメソッドの使い方 次の書き方で取得したレコードを並…

【Rails】関連付けたモデルの外部キーへのpresense: trueは必要ない

コードレビューでpresense: true の使い方を指摘されたので調べてみました。 結論 関連付けたモデルの外部キーへのpresense: true は必要ない。 アソシエーションによって紐付けられた外部キーの存在しない値やnil の場合へのpresenceバリデーションは自動的…

【Rails】request.refererとは?

コントローラーでリダイレクトさせる際にrequest.referer という見慣れない記述を見かけたので調べてみました。 結論 request.referer で遷移元のURLを取得できる。 requestとは? 現在実行中のリクエストサイクルの中でリクエスト情報が保存されているreque…

【Rails】redirect_toでのnoticeの2つの書き方

redirect_to を使った際のnotice オプションの書き方を忘れていたので調べました。 noticeオプションとは? redirect_to にnotice を使うで遷移後にフラッシュメッセージを表示できる。 フラッシュを表示するためのオプション(キー)はnotice 以外にもalert …