2023-01-01から1年間の記事一覧
test-unitの基礎知識。 test-unitとは? Ruby標準のテスティングフレームワーク minitestと互換性有り 単体テスト 単一のプログラム部品(モジュール)を対象としたテスト クラス、メソッド、関数などの最小単位が対象 問題の早期発見が目的 モジュール単位の動…
バリデーションの実装で配列同士の比較で要素の順序を考慮せず比較する方法としてSetを教えてもらいました。 結論 Rubyでは集合を表すSetを使うことで配列の順序の考慮が不要になる。 class Set (Ruby 3.2 リファレンスマニュアル) Set(集合)とは? RubyのSe…
テスト駆動開発の基礎知識。 TDDとは テスト駆動開発 ゴールは「動作するきれいなコード」 テストファーストで開発を進める アジャイル開発で普及している 品質を担保することが目的ではない 安心して開発することが目的 汚いコードとは 以下が含まれている…
テスト技法の概要メモ。 ソフトウェアテストやテスト技法の概要 ソフトウェアテスト ソフトウェアが想定通りに動作するか評価、検証すること 仕様通りに機能が動作するのかのチェック ソフトウェアテストの7つの原則(JSTQBのシラバスに記載) テストは欠陥が…
結論 ブロック処理をより完結に書ける記法。 インスタンス.{ |ブロックパラメータ| ブロックパラメータ.メソッド名 } を(&:メソッド名) で書ける &:メソッド名 で記述するには特定の条件がある 通称は「あんころ」らしい。 記述例 文字列の入った配列をupcas…
ポリモーフィックとは 1つのモデルが他の複数のモデルに属していることを、1つの関連付けだけで表現できます。 一つのモデルを同じインターフェースを持ったものが扱う(ダックタイピングする) ポリモーフィックとは1つのモデルで関連付いた複数のモデルの…
Contextを使用する際のProviderの指定を間違うと共有したはずのコンテキストが子コンポーネント毎に分岐してしまうので注意が必要です。 サンプルコード 以下のようなContextを使って子コンポーネントにログイン情報を共有するコードを例にします。 //Contex…
JavaScriptでlocalStorageを使う方法を調べました。 localStorageとは Window.localStorage - Web API | MDN ブラウザにデータを保存させる機能。 保存期間に制限が無い セッションに似ている セッションはブラウザを閉じたらデータは消去される 保存領域はU…
既存のRailsアプリケーションの規模感を掴むためのメモです。 各ファイル毎に見ていくと規模感が掴むきっかけになりそうです。 rails routes エンドポイント、URLの雰囲気を掴む。 テキストに落とすと見やすい rails routes > ファイル名 で出力結果をファイ…
Reactに引き続きReduxのキャッチアップが必要になりました... 日本語のドキュメントを読んで必要そうなとこだけまとめた自分用メモです。 間違い、分かりにくい部分がたくさんあるはずです。 Redux自体少し古い技術っぽいので参考にならない部分が大いにある…
Reactのキャッチアップが必要になったので公式 を一通り読んだことをまとめました。 自分用のメモなので間違い、分かりにくいところがたくさんあると思います。 Hello World Reactを触る上での最低限のポイント。 let、const で変数を定義する(var と等価) …
仕事で全然ソースコードが読めず、大変なのでソースコードの読み方を自分なりにまとめてみた。 ソースコードを読むとは 良く分かっていないが多分次のようなことだと思う。 プログラムの意味をイメージできること プログラムを書いた人の意図をイメージでき…
Git管理せずにrails new したかったので方法を調べました。 結論 rails new 時にG (--skip-git)オプションを付与する。 $ rails new アプリ名 -G $ rails new アプリ名 --skip-git # -Gと同じ rails new 時はデフォルトでGit管理が自動で行われる仕様になっ…
コマンドライン(ターミナル、コンソール)でよく使うコマンドを整理しました。 表の中の「覚えるヒント」については自分なりに覚えやすいように無理やりひねり出したもので、公式な情報ではありませんので参考程度にしてください。 移動系 動作 コマンド 覚え…
ロールバック前にマイグレーションファイルを削除してしまいロールバックできなくなってしまったので対処法を残しておきます。 そもそもちゃんとコミットを残しておけばgit checkout するだけでokなので、こまめなコミットを積んでおくの大事です(自戒)。 結…
突然Finder内のiCloudが同期しなくなり、解決までちょっと時間が掛かってしまったので対処方を記録しておきます。 原因はよく分かっていませんが割と良くあること(?)のようなので色々試して解決しない場合は試してみてください。 結論 「セーフモード」でMac…
コードレビューでコントローラ分割のアドバイスを頂いたのでDHH流のRailsのコントローラの分割について調べました。 DHH流のコントローラ分割とは? コントローラが元々持っているRESTアクションやデフォルトの5つの機能にはないメソッドを付け加えたいと思…
GitHubを使ったコードレビュー時のコメントの追加と返信のやり方が曖昧だったのでまとめました。 セルフレビュー時にコメントで補足情報を追加する レビュワーに良いアドバイスをもらうためにセルフレビュー時に補足情報をコメントすることでレビュワーに意…
メソッド名の末尾に?が付くメソッド(勝手に?系メソッドと呼びます)がたくさんありすぎてよく分からなくなったのでまとめました。 Ruby Rubyのメソッド。true/falseを返します。 nil?: オブジェクトがnilか? empty?: インスタンス(配列、ハッシュ、文字列等)…
RubyをM1 macにインストールする際にBUILD FAILED が表示されインストールできなかったので解決法を調べました。 結論 下記コマンドでインストールできる。 $ RUBY_CFLAGS="-w" rbenv install x.x.x 原因とエラー詳細は後述します。 環境 今回インストールし…
フォロー機能の設計から実装までの情報を整理しました。 実現したいこと 次の2つの機能を実装したい。 自分以外のユーザーをフォローできる フォローしているユーザー 、フォローされているユーザー を取得できる フォロー機能のテーブル設計 上記のフォロー…
ぼっち演算子の使い方をすっかり忘れていたのでまとめておきます。 結論 ぼっち演算子&. とはレシーバーがnil だった場合にNoMethodError ではなくnil を返すRubyのメソッド呼び出しの演算子です。 メソッド呼び出しで .の代わりに &.を使うことができます。…
rails g controller でディレクトリを指定してファイルを作成したかったのでやり方を調べました。 結論 指定するディレクトリを/ か:: で区切って指定する。 $ rails g controller ディレクトリ名/コントローラ名 アクション名 $ rails g controller ディレ…
order メソッドで並び替えする必要が出たので使い方を調べました。 orderメソッドとは? 取得したレコードを特定のキーで並び変えるメソッド。 Active Record クエリインターフェイス - Railsガイド orderメソッドの使い方 次の書き方で取得したレコードを並…
コードレビューでpresense: true の使い方を指摘されたので調べてみました。 結論 関連付けたモデルの外部キーへのpresense: true は必要ない。 アソシエーションによって紐付けられた外部キーの存在しない値やnil の場合へのpresenceバリデーションは自動的…
コントローラーでリダイレクトさせる際にrequest.referer という見慣れない記述を見かけたので調べてみました。 結論 request.referer で遷移元のURLを取得できる。 requestとは? 現在実行中のリクエストサイクルの中でリクエスト情報が保存されているreque…
redirect_to を使った際のnotice オプションの書き方を忘れていたので調べました。 noticeオプションとは? redirect_to にnotice を使うで遷移後にフラッシュメッセージを表示できる。 フラッシュを表示するためのオプション(キー)はnotice 以外にもalert …
作成したアプリのコードレビューで外部キー制約を追加するように指摘されたので調べて見ました。 結論 外部キーを保存するカラムに対して関連付けしているテーブルの主キーのみを保存するように制限し、データ不整合を防止すること。 具体的には次の制約が追…