ume

rails7 メンターさんにコードレビューしてもらったフィードバック

前書き これは記事というより個人的な忘却録として残します。 指摘箇所 ⇨find_or_create_by()メソッドを使おう モデル.find_or_create_by(引数). ⇨引数の条件でモデルからレコードを探しあれば戻り値として返すが、見つからない場合は(引数)をモデルに新規作…

本番環境でデータベースリセットしマイグレーションファイルの適用と初期データ挿入

前書き 本番環境でデータベースをリセットし再びマイグレーションファイルを適用させたいのですがはまったので記事に残します 環境 rails7 ruby 3.0.8 heroku postgresSQL 結論 heroku pg:reset -a <アプリ名> heroku run rails db:migrate heroku run rails…

rails7 from_withのオプションの違い(model:オプションとurl:オプション)

結論 フォームのデータをコントローラーでparams[:モデル名][:キー]でデータを受け取るかparams[:キー]で受け取るかの違い modelオプション ⇨params[:モデル名][:キー]でデータを受け取る urlオプション ⇨params[:キー]でデータを受け取る modelオプション …

Rails7メンターさんにしていただいたこと(Active StorageのN+1問題)

前書き 現在ECサイトを作成しています。 以下のコードで上記の表示をしています. index.html(↓わかりやすいように余計なdivタグなど省略). products_controller.rb class ProductsController < ApplicationController def index @products = Product.all #pr…

正規表現を翻訳

前書き 下記の正規表現の意味を一つ一つ分解し理解を深める /\A(?=.*\d)(?=.*[a-zA-Z])[a-zA-Z0-9]+\z/ \A ⇨先頭文字を評価 () →グループ化. 評価する文字に()内で指定した複数文字をがあるか調べる. 例(じゃ)+ーん. マッチする文字 じゃじゃーん じゃじゃじ…

rails7 ルーティングの記載の順番で挙動が変わる件について

前書き 正しいルーティングを記載しているのに想定していたコントローラーに繋がらなくハマったので記事に残します。 ハマったこと new_admin_product(admin/products#new ) というprefixでリクエストを送るとBのadmin/productsコントローラーのnewアクショ…

rails7 データベース string型とtext型の文字制限のバリデーションについて

前書き 以下のnameカラム(string型)とdscriptionカラム(text型)にlengthのバリデーションは必要?また必要なら何文字で設定するのがいいの?という2つの疑問が湧いたので忘却録として記事に残します ↓migrationファイル 結論 ⇨人それぞれの用途でlengthのバ…

javascriptのプリミティブ型とオブジェクト型の違い(忘却録、殴り書き)

javascript エンジニアが実務でよく使うjsのMathオブジェクト

目次 Math.random() Math.round(数値) Math.ceil(数値) Math.floor(数値) 1. Math.random() ⇨0~1までのランダムの数値を作成します。 console.log(Math.random()) #出力結果 0.04764646236311276 1. Math.round(数値) ⇨四捨五入する console.log(Math.round(…

rails7 メンターさんからのフィードバック

指摘箇所2つ ルーティングでresourcesを使う パーシャルを使う ルーティングでresourcesを使う 修正前(私のコード) Rails.application.routes.draw do root to: 'product#new' get 'product/show/:id', to: 'product#show', as: 'product_show' end 修正後(…

javascript知らなかったこと

知らなかったこと javascriptの2種類のデータの型,オブジェクト型とプリミティブ型 オブジェクトのメソッドの定義(rubyでいうハッシュ) 1. javascriptの2種類のデータの型,プリミティブ型とオブジェクト型 プリミティブ型 特徴:変数の中身(値)が同じでも別々…

LANとWANの違い

WEB

結論 LAN = 狭い範囲内で端末同士(無線ルーターとiphoneなど)が通信できる仕組み WAN =広い範囲で端末同士が通信できる仕組み LANとは LANの例. ⇨Wifi。厳密にはwifiはLANの通信規格。なので総称として家具(LAN)と椅子(wifi)の関係 wifiはLANの一種でwifiは…

rails7+esbuildでjsファイルを個別に読み込む

前書き rails6とrails7でJsファイルの読み込み方が変わったみたいです。その結果「rails7でjsファイルが読み込めない」というエラーにハマったので、同様のエラーに困っている方の参考にと記事をに残します。 実行環境 rails Rails 7.0.6 ruby 3.2.1 Docker …

railsをdocker化させる

作成する環境 ruby 3.2.2 Rails:7.0.6 Postgres:version12系 全体像 Dockerfile作成 docker-compose.ymlファイル作成 docker-compose up でコンテナ作成 データベース作成(初めて起動する場合) マイグレーションを適用する(初回) host:3000にアクセスする。 …

RubyとRailsのdockerfileの書き方

前書き railsのコンテナを作成しようとdockerfileを作成する機会がありました. ただ下記のような疑問がありました dockerfileにどんなコマンドをどんな順番で記載すべきなの? 上記のdockerfileはどうやって疑問を解決するために記事に残します dockerfile全…

Ruby safe navigation operator(ぼっち演算子)

ぼっち演算子とは? ⇨レシーバーがnilだった場合でもメソッドをエラーにさせない仕組み 例 class User def name puts "まさです" end end user = User.new user.name object = nil object.name 出力結果 a.rb:15:in `<main>': undefined method `name' for nil:Nil</main>…

Rubyローカル変数と同名のメソッドについて

前書き Rubyに関して新たな知見を得たので忘却録として記事に残します。 以下のコードを見て introduceメソッドの出力結果が 「僕ドラえもん」か「野比のび太」どちらが出力されるかわからない方はこのまま記事を読み進めてください。 class User def name "…

Ruby 拡張性のあるメソッドの作成方法

前書き 友人にコードを見ていただいた際 「この辺拡張性の低いコードやな」と指摘されました。 「そもそも拡張性とは?」 「なんで拡張性の高いコードを書かないといけないの?」 上記2つに対して疑問が湧いたので忘却録かつ誰かの学びに繋がればという想い…

REST APIについて

REST APIとは? ⇨RESTというルールに基づいてAPIを使用可能にすること そもそもAPIとは? ⇨便利機能(google mapなど)を外部(地球上のみんなに)に提供(好きに使ってもいいよと機能を公開)すること. 通常google mapはgoogle mapのアプリ上でしか使用できない。…

rest 階層化システム

WEB

階層化システムとは? ⇨サーバーに負荷をかけない(負荷分散)仕組みかつサーバーが落ちてもサービスを止めない仕組み 通常アプリを作成し利用しようとすると以下のように複数のサーバーを使用する必要がある このサーバー構成の問題点は クライアントが増えた…

SoapとRestで クライアント/サーバーを比較してみた

WEB

前書き なぜ昨今のwebアプリケーションではrestの設計手法で開発されるようになったのかがわからなかったので1990年代に主流だった設計手法(soap)と比べてrestは何が嬉しいかを学習したいと思います。 クライアントとサーバー soapとrest両方の設計手法では…

HTTPレスポンスの中身

WEB

HTTPレスポンスの構成 3つのパートに分けれる HTTPステータスライン HTTPレスポンスヘッダー ボディ HTTPステータスライン ⇨「HTTPリクエストの結果」が、ざっくり書かれている場所 実際のステータスライン↓ HTTP/1.1 200 OK\r\n ステータスラインの構成. …

HTTPリクエストの中身を見てみよう

WEB

HTTPリクエストとは? ⇨pcから「HTMLください」や「画像ください」という依頼をサーバー側にするもの。 この記事では実際どのような依頼(〇〇ください)がwebサーバーに送られているのか中身を見ていこうと思います。 HTTPリクエストの中身 3つの要素で構成…

web APIの概要

WEB

Web APIとは? そもそもWebとは? ⇨クライアントとサーバー間でデータの送受信を行う仕組みのこと 左=クライアント. 右=サーバー. 例 webサイトを閲覧する際(googleでwebサイトのリンクを押した瞬間). webサイトを閲覧する際 「この〇〇ください」、「〇〇…

Ruby インスタンス変数とローカル変数の使い分け

前書き 唐突ですがインスタンス変数とローカル変数みなさんどのように使い分けているでしょうか? もし. インスタンス変数=インスタンス変数を定義しているメソッド(initialize),以外のメソッド(accelerateなど)からでも呼び出せる変数(下記のコードのように…

Ruby オブジェクト指向(カプセル化)

カプセル化とは ⇨クラス外部から不用意にメソッドが実行されるのを防ぐこと 例 メソッドのカプセル化なし def greet puts "こんにちは" end greet 出力結果 こんにちは このようにメソッド名だけで処理を「どこからでも」呼ぶことができる このようなメソッ…

Ruby ポケモンで学ぶオブジェクト指向(ポリモーフィズム))

ポリモーフィズムとは? ⇨ 同じメソッドでありながら違う振る舞い ポケモンの例(ポケモンクラスという親クラスと子クラス(ゼニガメ(Squirtle)とヒトカゲ( Charmander)クラスがあるという構造になっています) # ポケモンクラスの定義 class Pokemon def initi…

Ruby オブジェクト指向(継承)を学ぶ

前書き 継承 ポリモーフィズム カプセル化 オブジェクト指向の3つの特徴それぞれの理解が曖昧なので記事を通じて理解(どんな時に使うのなど)を深めたいと思います. ⚠️本記事は継承に焦点を合わせて作成します。 継承とは? ⇨子クラスを作成すること. 子クラ…

Ruby オブジェクト指向について

目次 オブジェクト指向とは? なぜオブジェクト指向が必要なのか? オブジェクト指向とは? ⇨①共通のデータやメソッドをテンプレート化(使い回し)し保守性や開発効率を上げる開発手法. 疑問1,共通のデータやメソッドとは? 疑問2テンプレート化(使い回し)と…

Ruby リファクタリングの概要

リファクタリングとは? ソフトウェアの外部の振る舞いを保ったまま内部の処理を短く、誰がみてもわかりやすく変更していくこと。 なんでリファクタリングが必要なのか? ⇨開発効率が上がる(バグ修正しやすい、追加開発しやすい). 追加開発=機能を追加して…