33日目
今日の学習
Ruby
クラス
定数
クラスの中で定数を定義したい場合は、メソッドの内部では作成できないので、クラス構文の直下で作成をする。
定義された定数は、クラスの外部からクラス名::定数名
という形で直接参照することができる。
class Number DEFAULT_NUM = 0 end Number::DEFAULT_NUM #=> 0
定数は、クラスの外部で再代入することができる。
これを防ぐ場合、freeze(凍結)
をして、変更を受け付けなくなるようにする必要がある。
クラス名.freeze
でクラスを凍結することができる。
ミュータブルなオブジェクトに関しては、配列などであれば[***].map(&:freeze).freeze
などでfreezeしておく必要がある。
逆に、イミュータブルなオブジェクトはfreezeする必要がない。
定数は変更しようと思えばできてしまうものなので、もしも活用する場合は注意する。
Ruby on Rails
Railsチュートリアル第2章
引き続き、Railsチュートリアルで学習。第1章を終えたが、これをProgateが終わった状態ですぐにやり始めていたら間違いなく心が折れていただろうなと感じる。
ここでは、scaffold
というコマンドを学んだ。Railsに元から備わっているようで、MVCやデータベースの設定を一発で生成してくれる超便利コマンドだった。
まずは自動生成されたものを一つずつ丁寧に見ていき、バリデーションを追加してみたりするという流れだったが、本当にいきなりここから入ると混乱してしまっただろう。
自分が思っているよりも、この項目ではこういうことをしているんだな、ここの記述はこういう意味なんだなと理解できていたことを知れて良かった。
また、Heroku
に初めてデプロイをしたが、その中でもエラーが何度か起きた。ちゃんとデプロイできた時は嬉しかった。
何をするにも何らかのエラーにぶち当たり、デプロイすること自体が怖いのだがAWSなんかはもっと複雑なんだろうか。
Railsチュートリアル第3章
第3章 ほぼ静的なページの作成 - Railsチュートリアル
元に戻す方法
コントローラ
自分はまだ、やり直したいと思ったときに意図的に巻き戻した経験がない。
大抵は、もう一度順序を確かめた方がいい場合が多く、最初からアプリを作り直すことが非常に多い。せっかくのRailsの機能を全く活かせていない。
Railsチュートリアルの第3章で、元に戻す方法について言及されていたのでメモ。
もしもrails g controller ***
で作成したコントローラの作成を取り消したいときは、
rails destroy controller ***
このように、destroy
を用いて取り消し処理を行う。
マイグレーション
rails db:migrate
をおこなった後、マイグレーションの変更を元に戻したいときは、
rails db:rollbak
これで一つ前の状態に戻す。
最初の状態に戻したい場合は、
rails db:migrate VERSION=0
とすれば元に戻すことができる。
学習メモ
今日のやらかし
ルーティングミスでHerokuにデプロイ失敗
root users#index
こう書かなければいけないところを、usersn#index
と書いてしまっていた。
気づかずにHerokuにデプロイし、URLに飛んでみると
The page you were looking for doesn't exist. You may have mistyped the address or the page may have moved. If you are the application owner check the logs for more information.
というエラーページになってしまう。
heroku logs
でログを見てみると、ActionController::RoutingError
の文字が。
エラーのログを確認することは重要だなと実感した。