Rails Tutorial、始めました【4章】

2021年2月2日

Rails Tutorial 4章に突入!

3章の記事はこちらから↓

Rails Tutorial、始めました【3章】

4章 Rails風味のRuby

今回はRubyの文法学ぼうの回でした。

ほとんどコードをまとめるだけになるかも^^;

カスタムヘルパー

Railsのビューで使う組み込み関数は、自分で作ることもできるようです。

前回作成した上記ビューでは、タイトルが空を与えないと空欄になってしまうので、タイトルを与えなくても空欄にならない、便利な関数を作成していきます。

その関数は下記のようになりました。

Viewにあるコードに下記の変更を加えれば、full_title関数が使われるようになります。

また、privideの行はいらなくなったので削除してOKです。

テストには下記のコードを追加します。

文字列とメソッド

ここはRubyの基本的な知識を学びましょうって感じでしたね。

一応やったことをまとめますが、あんまりRailsは関係なかったです。

文字列

文字列についてですね。

書いて合ったことを下記にまとめました。

オブジェクトとメッセージ受け渡し

Rubyではあらゆるものがオブジェクトです!という説明が書いてありました。

例えば文字列とかnilとか、””までもがオブジェクトです!

メソッドの定義

自分でメソッドを作ってみようの回です。ここも特に特筆すべきことはないですかね。

他のデータ構造

配列と演算子

配列について学びます。結構色々ありました。

ブロック

Rubyの極めて強力かつ分かりにくい機能です。

each、times、mapを学びました。

ハッシュとシンボル

ハッシュは整数値以外のものをインデックスにつける点だけ、配列と異なります。

CSS、再び

タイトルはすごいですが、CSSはかっこ、改行の有り無しは関係ないんだぜ!プログラマーの思い通りだ。すごいだろ?

ってのが書いてあるだけでした。以下のような感じですね。

Rubyにおけるクラス

ついにクラスきたか!Rubyでは全てがオブジェクトですからね。クラスはしっかり分かっとかないとダメですよね。

コンストラクタ

まずはコンストラクタです。

クラス継承

Javaではよく聞くクラス継承ですが、Rubyにもあるんですね。うまく使ったら便利そうだな〜と思うけど、私は全然使いこなせないです(^_^;)

ふむふむ、Stringの親クラスはObjectで、Objectの親クラスはBasicObjectなんですね〜。複雑!実に複雑!

もちろんStringクラスを親クラスにして、新しいクラスを作成することもできます。

上記の例では、Stringを親クラスにWordクラスを作成しています。Wordクラスでは新しく作ったメソッドだけでなく、Stringクラスのメソッドも全て使うことができます。

組み込みクラスの変更

これは驚きました。なんとRubyでは、誰でも基本クラスを拡張できちゃうみたいです。

なので例えば、さっきWordクラスに追加したメソッドはStringクラスにも追加することができちゃうのです。

これはすごい!(迫真)

しかしこのような大いなる力には大いなる責任が伴うようです。使い方を間違えないように気をつけましょう…

コントローラークラス

さらばRuby!ただいまRails!

基本的なクラスの知識を身につけたので、ようやくRailsに戻ります。Railsのコントローラークラスを見てみましょう。

複雑ですが、下記のような構造になってるみたいです。

複雑スギィ!まあ何となくはわかりますけどね。AbstractControllerが全Controllerの元になってて、用途別に色んなControllerを派生させてる感じなんですかね。

ActionControllerとApplicationなど、結構深く分かれてるので、全コントローラーを図示すると樹形図みたくなりそうですね。

ユーザークラス

最後に完全なクラスを作ってみましょうという回でした。

まあこれはソースコードを見ればわかるのではないでしょうか。

まずはinitializeメソッド!これはもう形が決まっていて、attributesを引数にとるようになっています。

そしてインスタンス内で使う変数はインスタンス変数と呼ばれ、Rubyでは変数の先頭に@をつけるようになっています

formatted_emailは普通のメソッドです。名前とメアドを組み合わせた文字列を生成します。

まとめ

Rails Tutorial4章はほとんど文法の説明でしたね。正直あんまり記事にするところがなかったというか^^;

実際記事にしてみても、書いてある説明とコードを羅列しただけになっちゃいましたね。謎のエラーにハマってどう対応したかとかを書くのがこの記事の目的でもあるんですが…

まあまだ4章です。全14章あることを考えるとまだまだ闇はあるのでしょう…

次回、5章に続く!