プログラミング備忘録

プログラミングの学習状況をメモしています

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の文字が。

エラーのログを確認することは重要だなと実感した。