「fatal: not a git repository (or any of the parent directories): .git」エラー!

Git忘れちゃってることが多すぎる問題。

コマンドの内容改めて復習しないと。
【 git checkout 】コマンド(基礎編)――ワークツリーを特定のブランチやコミットに切り替える:Linux基本コマンドTips(391) - @IT

git cloneの後にブランチしようとしたらエラー。
表題は自分のターミナルで出たエラー内容ですが下記の参考と全く同じでしたね。
エラー:fatal: Not a git repository (or any of the parent directories): .git 対処方法 - Qiita
同じようにユーザー登録したらできました。

明日はPATHについても頭を使います。

ユニークインデックスって何者?

勉強していてもうちょっと知識補完をしたかったので調べました。

ユニーク索引と非ユニーク索引

ユニーク索引は、表内のデータの 2 つの行が同一のキー値を持たないようにすることによりデータ整合性の維持に貢献する索引

【SQL】UNIQUE制約についてのあれこれ。似ている名前”ユニークインデックス”との違いやカラムの組み合わせについて解説 | ポテパンスタイル

混同されがちな項目ですが、一意キー(UNIQUE)はテーブルに付与する制約です。
言い換えると、テーブルに格納されるレコードに対して制限を付けるだけなので、当然「オブジェクト」ではありません。

〜中略〜

主キー(PRIMARY)は一つのテーブルに対し一つしか作成できません。
一意キー(UNIQUE)は一つのテーブルにいくつでも設定することが可能です。

ユニークインデックスさんはデータベースのテーブルに付与され、
テーブルにいくつでも設定ができる同一のキー値を持たないようにデータ整合性を維持できる索引。
なるほど、すっきりしました。

ヘルパーメソッドさん、_urlと_pathメソッドの違い

ヘルパーメソッドさん、すごく助かるけどまだよくわからない

ヘルパーメソッドと調べて一番上に出てきた記事↓
ヘルパーメソッドとは、また使用する利点は - Qiita

主にviewでHTMLタグを出現させたりテキストを加工するために予めメソッドが用意される。
HTMLやRubyの記述がセットになった、ビューファイルで使用できるメソッド

特にURLヘルパーメソッドさんがよくわからなくなってしまった。
のでちょいと調べたら書き方分かった。
インターネットって便利ですね、ありがとうございます。
【初学者向け】_urlや_pathといったヘルパーメソッドの使い方 - Qiita
【Ruby on Rails】便利なヘルパーメソッド - Qiita


何がわからなかったかというと、パスとヘルパーメソッドの書き方です。
もちろん基本的な書き方は分かったのですが
引数をとっている場合はなんなのかがわからず…。

どうやらルーティングを見れば一目瞭然のようですね。
(ターミナルで「rails routes」)
知らなかった。

_urlと_pathメソッドの違い

こっちも気になっていた_urlと_pathメソッドの違い。
_pathメソッドと_urlメソッドの使い分け - Qiita

・リダイレクトするときは_urlを使用する。それ以外は_pathを使う。
・ちなみに、testでassert_templateの引数として_pathや_urlを渡してもだめ。ちゃんとusers/newなどで指定してあげないとダメ。

とても分かりやすい説明を発見してしまいました!覚えておこう。

eval関数とproduction環境でアプリケーションを立ち上げる際に悩んだこと

eval関数

eval() - JavaScript | MDN

eval() は呼び出し元の権限で渡されたコードを実行する危険な関数です。悪意のある第三者に影響を受ける可能性のある文字列で eval() を実行すると、そのウェブページや拡張機能の権限において、ユーザーのマシン上で悪意のあるコードを実行してしまう可能性があります。さらに重要なことに、サードパーティのコードは eval() が呼び出されたスコープを見ることができるので、類似の Function では影響を受けない方法でも攻撃を受ける可能性があります。

ほんとうに怖い eval() の乱用|R3 Cloud Journey

eval() は、渡した文字列を JavaScript として解釈してそれを実行するという関数です。

production環境でアプリケーションを立ち上げる際に悩んだこと。

zsh環境変数のセット
コンソールにて以下を実行。

>

echo export RAILS_SERVE_STATIC_FILES=1 >> ~/.zshrc
source ~/.zshrc
|

(基本的なことなのですが覚えてなくて悩みました。しかもbashだらけ)

・Credentialsの編集
どうやって編集するのかがわからず悪戦苦闘。
下記の記事通りにやったらできました。
Rails5.2から追加された credentials.yml.enc のキホン - Qiita

ですが「vi」での編集なので
コマンドモードとインサートモード、そもそも保存の仕方もわからず
調べながらなんとかできました^^;
viコマンドについて詳しくまとめました 【Linuxコマンド集】


なお、使用しているエディタがVSCodeなので初めから
コンソール

>

EDITOR='code --wait' bin/rails credentials:edit
|

RSpec+Capybaraでテストしたらエラー_Capybara::ElementNotFound

エラーの内容

Failure/Error: expect(page).to have_content '名前を入力してください'
       expected to find text "名前を入力してください" in "Nameを入力してください"
1・エラーを正しく直したパターン

エラーの原因は、日本語対応させるためのファイル「ja.yml」のインデントが間違っていたため。

正しくはTaskのnameという属性は「名前」と呼ぶということで
task以下はインデントが必要だったのに、していなかったため日本語化されていなかった。
その結果存在しない「名前を入力してください」のテストをしてしまったためにエラーが出た。

正しいコード↓

      task:
        id: ID
        name: 名前
        description: 説明
        created_at: 登録日時
        updated_at: 更新日時

誤っていたコード↓

      task:
      id: ID
      name: 名前
      description: 説明
      created_at: 登録日時
      updated_at: 更新日時
2・原因がわからずコードを変えてとりあえず成功するか確認したパターン

当然こちらはダメだとは思いつつ直接の原因がどうしてもわからず
エラーが出ないようにするパターンも発見したので試してみた。

参考にさせていただいた記事↓
Capybara::ElementNotFound:エラーの解決【結合テスト】 - Qiita

「名前」としていたところを参考の記事の通りに
デベロッパーツールを使用して確認したものに変更したらできた。

ダニング=クルーガー効果_底にきた気がする。

ダニング=クルーガー効果

motifyhr.jp

まさにこの通りでちょっと分かった気になっていたけど何もわからない…
少しわからなかったことがわかるようになったけど
結局氷山の一角で全く何もわからない状態に入った気がする。

ある意味成長なのかどうなのか。
とりあえず今が一番苦しいと割り切って勉強する。

findとfind_byメソッドって何が違うの?

ぴったりの記事発見。
find、find_by、whereの違い - Qiita

findメソッドとは
〜中略〜
該当データがない場合は、ActiveRecord::RecordNotFoundが返ってくる。
〜中略〜
idの値が分かっていて、そのidのデータを取得したい場合・・・find
idの値が不明で、id以外のカラムを検索条件としたい場合・・・find_by
id以外のカラムの検索条件で、複数の実行結果を取得したい場合・・・where

nilを返してもらわないと困る(エラーを発生したくない)場合
・id以外を返してもらいたい場合
は少なくとも「find_by」を使った方がいい。

ただ、他の内容を確認したら「find_by」はつき当たった
初めの1件を返すとのことなので注意して使う必要がありそう。
【Rails】 | Pikawaka - ピカ1わかりやすいプログラミング用語サイト