マイグレーションファイルのロールバックとRailsコンソールが終了できない

マイグレーションファイルのロールバック

rails db:migrateでエラー(StandardError: An error has occurred, this and all later migrations canceled:が出た時の対処 - Qiita

本の通りにマイグレーションファイルのロールバックをしてみたら
元に戻れなくなってしまう痛恨のミス。
上記のURL通りやったら元に戻りました!


Railsコンソールが終了できない
原因:最初に閉じタグを忘れていたせいで、ずっとコードが続けていると認識されてしまった。

リファレンスマニュアル
library irb (Ruby 3.0.0 リファレンスマニュアル)

irb(main):001:0> task=Task.new(name: "test,task"
irb(main):002:1> task=Task.new(name: "test,task")
irb(main):003:1> task.valid?
〜中略〜
irb(main):005:1> quit
irb(main):006:1> ^C
〜中略〜
irb(main):014:0> ")

→1になっている場合はコードが続いていると認識しているということを知らなかった。

→最後の「")」でやっとエラーメッセージが出てきてくれた…良かった。
(SyntaxError ((irb):14: syntax error, unexpected ')', expecting end-of-input)

エラーメッセージを日本語にする&Bootstrapが適用されない

Railsエラーメッセージを日本語で出す
rawファイルをダウンロードしようと
wgetコマンドを実行したがそんなコマンドは存在しないと怒られた。

wgetをHomebrewを利用してインストール

 brew install wget


その後に再度ダウンロードを行ったらできた。

・Bootstrapの設定が適用されない
Bootstrapのcontainerが=yieldと同じ位置にあったため
=yieldをcontainerの中に入れたら適用された。

・saveとsave!メソッド
【Rails】saveとsave!について - ゆっくりブログ

pumaと永続化とetc

・puma:てっきり某有名メーカーの読み方かと思いきや「ピューマ
サーバーが頭の中でごちゃついていたので調べてみるとまた素敵な記事発見。
Rails開発におけるwebサーバーとアプリケーションサーバーの違い(翻訳) - Qiita
以前WindowsVMCentOSApacheを使用したが、あれはWebサーバー
今回のpumaはアプリケーションサーバー!
Webサーバー:Webクライアントに対する窓口
アプリケーションサーバー:Webアプリケーションの中核となる処理を行うプログラム

・永続化:
Javaのオブジェクト永続化に何を選ぶ?(2/3) − @IT
Javaの話ではあるけど永続化について説明あり。

永続化とは、インスタンスの状態を半永久的に保存し、いつでも復元できるようにすることです。

プログラムの終了と同時に消えてしまうインスタンスでは困る場合は永続化しないとね、ということらしい。

・HTMLの話、初めて見た<thead>
<thead>: 表ヘッダー要素 - HTML: HyperText Markup Language | MDN

初めてのirbとattr_accessor、気になったこと

・初めてのirb
バージョン指定してrbenv、RubyRailsをインストールして
正常に作動していそうなのにバージョン確認しても
デフォルトのRubyしか内容が表示されないので
何故だろうと考えたがすっかりPATHを通すのを忘れていた。
基本的なところで躓くのは嫌なので今後は気をつけねば。

・ゲッター
引数で受け取ったデータをインスタンス変数に代入
メソッドの中身を変えて設定した名前を返す
(attr_readerで定義できる)

・セッター
インスタンス変数の中身を参照
(attr_writerで定義できる)

→これらをまとめてattr_accessorで定義できる

●特異クラス、特異メソッド
【Ruby】特異メソッド・特異クラスを理解する - Qiita

・trueとfalseもオブジェクトという認識がなかったので驚いた。

・例外処理
【Ruby】例外処理まとめ - Qiita

とても難しいのでまた復習しないと…
いくつかの教材や本を見比べると内容の補完ができてとても良い。

ターミナル操作とgit

・今更ながらにターミナル操作について
頭の中でまとまっていなかったので良さそうなサイトを発見。
Macのターミナルコマンド一覧(基本編) - Qiita


・初GitとGithub
個人アクセストークンを使用する - GitHub Docs
リモートリポジトリにpushする際にユーザ名とパスワードを聞かれて
パスワードについてはGithubのログインパスワードでいいのかと思って入れて実行したものの
アクセストークンを作成してねと言われたので、アクセストークンの作り方ページを残しておく


[git reset (--hard/--soft)]ワーキングツリー、インデックス、HEADを使いこなす方法 - Qiita
非常にわかりやすい…。gif resetの違い。

・git pullとgit fetchの違い
git pull:リモートブランチをローカルのブランチに取り込める
git fetch:リモートブランチをローカル(追跡)ブランチで取得
この後にgit checkout foo ブランチに切り替えると
リモートリポジトリのブランチをまとめてローカルで確認できる。

ブロック、変数と定数

・ブロックってなんぞやと思ってしまいました。
Ruby ブロックについて学ぶ - Qiita
Rubyにはなぜ「ブロック」があるの? | Yakst


・メソッドは呼び出す
処理でputsを入れているなら呼び出しはメソッド名だけでいい

・今度はputsとreturnの違いが気になってしまいました。
そもそもputsは単に表示させるというイメージで
returnはメソッドが途中で終わるという違いが
ある時点で全く違うのかもしれない…。
return 戻り値ができると知ってしまったために感じただけかもでした。

・変数と定数
変数と定数 (Ruby 3.0.0 リファレンスマニュアル)
ローカル変数、よく聞くけどなんなのかよくわかってないので
リファレンスマニュアルを読む。


<知らなかったことシリーズ>
・メソッドのデフォルト値を指定して引数を省略して呼び出すとデフォルト値が代入される
しかも、引数を指定すればデフォルト値が使われない…すごい!
・キーワード引数についてもProgateでふーんと思う程度だったけど
引数を渡す順番が変わっても正しく呼び出せるという重要なことを知らなかった…。

クラス・モジュール・名前空間

モジュール、難しい…

クラスの継承
・子クラスは親クラスの一部
・子クラス<親クラス

モジュール
・includeメソッドを使うと引数で指定したモジュールのメソッドを
 クラス自身のインスタンスメソッドとして使える
・そうでなくてもいい
・複数のクラスで利用できる
・newメソッドでインスタンスを作ることができない

名前空間
音の響きが珍しすぎて頭から離れない。
相変わらず世の中にはわかりやすくまとめてくれている人がいる…ありがたい。
【Ruby/namespace】Rubyでよく見る「:: ←これ」を深ぼる - Qiita