ほげほげパッチ

有る事無い事 徒然なるままに

プログラミング

単体テストコード #3 (コントローラーのテスト)

テスト方針 modelのテスト: インスタンス生成 -> validチェック (データベースとのやりとりを確認) controller: リクエストを送ってみて -> レスポンスをチェック (クライアントとのやりとりを確認) Request Spec RSpec内のコントローラー用のテストの手…

DB設計:中間テーブル

中間テーブル テーブルが「多対多」の場合は、カラム同士の関係性だけを搭載したテーブルを間に作る。 user_classesテーブル id user_id class_id 1 1 1 2 1 2 3 2 3 4 2 1 through 「多対多」のアソシエーションで使う。 usersテーブル class User < Applic…

結合テスト#2

今日の学び 新単語は先に書き出すべし テストは基本ミスってるところを教えてくれるから、それに従う。 必要とされるのは、知識より根気。。。 have_selector セレクタの有無を確認 expect(page).to have_selector ".content_post[style='background-image: …

いざ 結合テスト

System Spec 結合テストを記述する仕組み。 Model Spec: モデルのテスト Request Spec: コントローラーのテスト (RSpec基本機能) System Spec: 結合テスト (CapybaraというGemを使う: Rails 標準搭載) Capybara = 結合テスト用のGem ≪chat GPT先生≫ Capybara…

蛇足 Gemfileのグループ分け

Gemをインストールするときはどこに書くのが正解だっけ?ってなったので。 結論 開発環境でだけ使いたい ===> group :development do テストでだけ使いたい ===> group :test do 開発環境とテスト環境で使いたい ===> group :development, :test do 本番環境…

単体テストコード#2

メソッド context: 条件ごとにグループ分け 使い方は、describeと同じ。単なるグループ分け。見やすさ。 テストファイルを作成するときのコマンド % rails g rspec:model tweet spec/factories の中と spec/models の中にファイルができる。 Faker::Lorem.se…

単体テストコード

今日の工夫 カリキュラムは、INDEXのタイトル部分だけを先に読んでから、上から順に中身を読む。 全体像を把握した上で、個別の内容をinputする。 徒然草 世の中にはいろんな働き方があって、いろんな技術があって、いろんな言語があり、勉強しなければいけ…

RSpec

今日は、「コピペせず、1回はする」を試してみた。 結構頭に入る。 RSpec 「Spec」 = テストコード 「Ruby」 + 「Spec」 = Rubyのテストコード なぜ Spec = テストコード? ≪chatGPT先生≫ 「spec」という用語は、「specification」(仕様)の略称として使わ…

GitHubおさらい + よくあるエラー

英語がわかるとマジで面白い。 (何の勉強?笑) 英単語(復習含む) migrate:ラテン語 migro(移住する) -> 移住する。渡りをする。 immigrate: in-(中に)+migro(移住する) -> 他国から移住する。 description: de-(~から下に)+scribo(書く)…

params深掘り

paramsの使い所がわかりません エラーの原因を探るときに、時々使われているけど、自分で使おうと思ってもさっぱり。 とりま、いつ何が入るのか追いかけてみる。 createアクション内にbinding.pry 10: def create 11: @post = Post.new(post_params) 12: 13:…

GitとGitHub

Key-Word Git:Linux開発者が命名。自分にちなんだ名前(?!)ということでGit。 スラングで「ばか」「間抜け」の意。 ちなみに、「Linux」も開発者名に由来。リーナス・トーパルズ。 バージョン管理ができるので、GitHubとあわせてチーム開発で重宝 GitHub:ソ…

サービス設計

ニュー単語 デプロイ:公開 depoly:折ら(ploiier)ない(des-) -> 配備する、配置する、展開する ペルソナ:サービスを使用するユーザー(ターゲットとは似て非なる言葉。) persona:語源不詳 -> 仮面、役柄、人物 派生語 person:人物 ユーザーストーリ…

requireとpermit

エラー問題めちゃくちゃ時間かかる。(2日かけて問題1 笑) 怪しい箇所の候補があまり浮かんでこない。 けど、数学の問題解いてるみたいで楽しい。 binding-pryで裏側の動き見る感じ、もっと使いこなしたい。 もっとちょうだい。 form_with => params の中…

デバッグ

ことば debug:de(否定)bug(虫) -> バグを取り除くこと pry-rails:デバッグツールの一つ。binding.pryが使えるようになる。 もともとpryというrubyのデバッガが存在する。それのRails版らしい。 pryはIRB(対話型コンソール)の上位互換。 pry:古英語…

検索機能

任意のルーティング設定法 collectionとmember いよいよ自分で好きにルーティング。 コレクションは、"集める"だけ = idなし メンバーは、"個人を認識"する = idあり resources内に入れ子にしないとつかえないっぽい └親要素に対してアクションを追加するか…

「.id」か「_id」か

困った なんか、idが乱用されていて、初心者を惑わせてくる。 結論 .id:主キーの取得 _id:関連のチェック 解説 .id .idはActive Recordオブジェクトのプライマリキー(主キー)を取得する。 (tweet.allとかuser.find()とかの、前半部分がオブジェクト) …

form_with

わかんなくなったので改めて整理。 例文 <%= form_with(model: [@hoge, @fuga], local: true) do |form| %> <%= form.text_area :text, placeholder: "ホゲホゲする", rows: "2" %> 解説 form.text_area :text └この:textが、params[:text]の形でコントロー…

アソシエーション Lv.2

3角関係の時のアソシエーション A ↕︎ ↘︎ B ↔︎ C みたいなとき 書き方 アソシエーションの書き方は一緒。 Aさん->Bさん Aさん->Cさん Bさん->Aさん Bさん->Cさん Cさん->Aさん Cさん->Bさん をそれぞれ全部書く。(belongs_to か has_many) ルーティングで…

ローカルサーバー再起動

ここのところよく再起動の指示が出る。どんな時に再起動が必要か再確認。 再起動が必要な3つのタイミング Rubyバージョンの変更 テーブル・カラム情報の変更 Gemの導入状況の変更 理由 これら3つは、ローカルサーバーを起動するタイミングに1度だけ読みこ…

N+1問題、部分テンプレート

メソッド関係 N+1問題。 レコードの数 + 1 回、紐付け先のDBを読みに行く、アソシエーション特有の現象。 パフォーマンス低下につながる。 └①全データ取得 └②レコード1に紐づくユーザー情報を取得 └③レコード2に紐づくユーザー情報を取得 └・・・ includes…

徒然なるままに

今日の名言 「大事なのは、AIに使われる側の人間でいるのか、AIを使いこなす側の人間になるか」 メソッド系 current_userカレントユーザーメソッド deviseのメソッド。current_userは、現在ログインしているユーザーの情報を取得。 mergeマージメソッド ハッ…

単語帳 #2

今一度 deviseの導入~Userモデルの作成 gemfileにgem ‘devise’って書いてbundle install rails g devise:install <- 忘れがち rails g devise user <- ×~ g model user rails db:migrate 入力欄を作った<%= f.text_field :hoge %>だけでは、値がDBに保存さ…

コロン(:)の位置について

なんか色々使い分けがあるらしい。 :simbol (前置)シンボルの宣言。見た目は文字列。扱いは数値。 hoge = { :name => :shige, :age => 10 } :mojiretsu (前置)文字列とか <%= f.text_field :hoge %> option: (後置)railsのオプション <%= f.text_field…

沼った

rails db系のコマンドが効かなくて沼った。。。。 作業記録。起きた事象は見出しのとおり。 デフォルトのマイグレーションファイルを適用して、そのあとAdd_columnをmigrateをして、rollbackとかしたせい? ググってたら、「一旦ルーティングのdevise_for :u…

ユーザー管理Gem == devise

職場でキーボード叩いてると、なんでマークダウン出来へんねん!ってなる今日この頃。 関西人でもないのに。 なんか、テキストの感じからして、あんまり記憶しなくても良いフェーズにきてる? 新しいメソッドとか CRUD:アップデート 更新 index post show n…

単語帳 #1

ストロングパラメーター :データベースの意図しない(悪意のある)書き込みを防ぐ。定石。 └require 要求 params.require(:モデル名) モデル名の内容を取得するが、空の場合とかをエラーにしてくれる。 └permit 許可 params.require(:モデル名).permit(:キ…

新しく学んだメソッドなど

開始1週間経過して、急に新しい単語が増えてきた。 こまる。 単語 ライブラリ:プログラムの集合体。railsはrubyのライブラリの一つ。 rubyのライブラリは、RubyGemsに集結。一つ一つをGem(ジェム)という。gemコマンドでインストール。Gemfileに書き込ま…

teck_camp始めました

色々あって、先週からteck-campに参加することになりました。 tech-camp.in 1からプログラミング勉強中です。今のところ、html / ruby / ruby on railsの触りだけ・・・・。 さて、railsのMVCのところで頭がこんがらがってきたので、一度整理。 M:モデル …