まさ@ブログ書き込み中

まさ@ブログ書き込み中

まさの旅、英語、プログラミング、プライベートについて、色々記録しています。

Railsチュートリアルやってて驚いたこと(2)

 

みなさんおはようございます、皆に「自分は人間国宝なんだと思う」って言ったらシカトされたまさです。

 

 

 

今日はRailsチュートリアルの4章〜5章をやって、僕が学んだことのまとめを書いていきたいと思います。

 

ちなみに1~3章についての記事はこちら

masa-world.hateblo.jp

これが7月22日に書かれているのを知って、自分の更新スピードの遅さに引いたことは内緒。

 

 

Rails風味のRuby

ヘルパー

第4章は「Rails風味のRuby」について説明されています。「Railsにおいて重要となるRubyのさまざまな要素について探っていく」ということがテーマです。

 

stylesheet_link_tag などのRailsで使える組み込みヘルパー(関数)の説明や、自分で作成するカスタムヘルパー(チュートリアルではページのタイトルを決めるfull_titleヘルパーを作りました)を作る方法を学びました。

 

また、ヘルパーをうまく使えてるかどうか、毎回テストを走らせてチェックもしました。そういう姿勢、いいよね(上から目線)

 

コンストラクタ

かゆいところに手が届くと言いますか、深い所までロジックが裏打ちされているのがプログラミング学習において僕が興奮するポイントです(まあ、ロジックが裏打ちされているから動くので、当たり前のことなんですが・・・)。

 

そんな僕を喜ばせたのが「コンストラクタ」というもの。

 

僕は当たり前のように文字列(例:"masa")にlengthメソッドを使ったりしてましたが、 string = String.new("masa") といったような形で、クラスのインスタンスを明示的に作成していないことを考えると何が起こっているのか説明がつきません。

 

実は、そこではコンストラクタがうまく作用していたのでした。チュートリアルでも

例えばダブルクォートを使って文字列のインスタンスを作成しましたが、これは文字列のオブジェクトを暗黙で作成するリテラルコンストラクタです。

と説明されています。

 

クラス継承

4章の最後は、Railsで行われているクラス継承について学びました。

僕は今までの学習から「application_controller.rbは全コントローラに共通のアクションを書くところだ」と思っていましたが、その理由が明らかになりました。

 

コントローラの各ファイルを見てみる(またはclassメソッド、superclassメソッドでチェックする)と、このような継承関係になっているのがわかります。

 

(まさが作った各コントローラ)<ApplicationController<ActionController::Base

 

つまり、僕が作った各コントローラはApplicationCotrollerを継承していたため、全コントローラに共通のアクションを書くならapplicaton_controller.rbに書けばいい、と習ったのですね。

 

 

レイアウトを作成する

第5章はサンプルアプリケーションの見栄えをよくするためにサイトのレイアウトを修正したり、パーシャル・Railsのルーティング・Asset Pipeline・Sassについて学びました。

 

アセットパイプライン

アセットパイプラインとは「CSSJavaScript、画像などの静的コンテンツの生産性と管理を大幅に強化する」ためのRails機能だそうな。

 

その最大のメリットの一つはアセットディレクトリ以下のjsやcssを実行時に圧縮してくれるということです。

 

パーシャル

パーシャルとはpartialという英語からわかるように、HTMLの一部分を別のファイルに書き込み、レイアウトファイルなどで呼び出せる機能です。

 

パーシャルを作る際には、ファイル名の冒頭を_(アンダーバー)で始めなければなりません。

 

layoutsディレクトリ以下に用意しておくそうな。

 

Sass

SassとはCSSより便利なスタイルシートを記述するための言語って感じ。

便利な点として

  • スタイルシート内に共通のパターンがある場合は、要素をネストさせることができること
  • 変数を使用できること

などが挙げられます。

 

名前付きルート

Railsでは、リンクのパスを示すときなどに名前付きルートというものを使うのが慣習になっています。

 

例えばこういうコードです。

<%= link_to "About", about_path %>

 

このabout_pathがあるパスを示しているのは、名前付きルートが使えるよう設定されているからです。

 

getルールを使ってget “/hoge”, to: “pages#hoge”のように変更をすると、そのままのルーティングの意味と同時に名前付きルート(hoge_path, hoge_url)が使えるようになるみたいです。

 

 

Railsチュートリアルは4章〜6章を勉強しましたが、4章・5章について書くだけでこれほど長くなってしまったので、6章については次に書いていきたいと思っています。

ではまた。