クモのようにコツコツと

フロントエンドエンジニア イイダリョウの技術ブログ。略称「クモコツ」

【Rails】Rails風味のRuby(Railsチュートリアル第4章 学習メモ)

Railsチュートリアルの続きです。前回は第3章で静的なページを作りました。今回は第4章、Rails風味のRuby。Rails風味とはどんな意味なのか。今回はRailsというよりはRubyがメインになりそう。それではいきましょう!

【目次】

Ruby/Ruby on Railsを習得するためにやったこと まとめ qiita.com

Railsコンソール出力

  • putsは自動的に改行\nが付く
  • printの出力は改行がない
  • 文字列の中に式展開#{ }を埋め込むことができる
  • Rubyの文字列はダブルクォート、シングルクォート両方使えるが、シングルクォートは式展開が使えない(逆に言えばシングルクォートは特殊文字もそのまま出力できる)

オブジェクト

  • Rubyではあらゆるものがオブジェクト
  • 文字列にlengthメソッドを繋げると文字数を返す
  • empty?のように末尾に疑問符?をつけると論理値truefalseを返す(if文の条件などに使える)
  • 論理値はAND&&、OR||、NOT!などもある
  • Rubyでは空nillもオブジェクト
  • オブジェクトに複数のメソッドを繋げて実行することもできる(メソッドチェーン)
  • Rubyには暗黙の戻り値を返す機能があるが、returnを付けて明確に返すこともできる(見た目がわかりやすくなる)

配列

  • splitメソッドで文字列を配列に分割できる
  • splitメソッドは初期状態ではスペースが区切られる
  • splitメソッドに引数を入れるとその文字列で区切られる
  • 配列のカウントは0から始まる(ゼロオリジン)
  • マイナスをつけると後ろから数える
  • 配列にsortなどのメソッドをつけると実行後の結果が返されるが、元の配列に影響はない
  • 変更したい場合は破壊的メソッドにする(メソッドの末尾に!をつける)
  • pushメソッドまたは<<で値を追加できる
  • joinメソッドで配列を結合した文字列にできる
  • joinメソッドに引数を入れると区切り文字を挿入できる
  • ..で範囲指定ができる(0..9)[0..9]など
  • to_aメソッドを付けると配列に変換できる
  • eachメソッドやmapメソッドとブロック{ }で繰り返し処理ができる(ブロックの中の| |は変数)
  • doendもブロック

ハッシュとシンボル

  • ハッシュはJSでいうオブジェクト(連想配列)みたいなもの
  • ブロック{ }の中でキーと値の区切りはアロー=>
  • キー名は文字列でダブルクォートで囲う(json形式に似ている)
  • ハッシュのキーはRubyでは文字列よりシンボルを使うのが一般的
  • シンボルは頭にコロン:を付ける
  • キー名の後ろにコロン:を付けるとアロー=>を省略できる(JSのオブジェクトに似ている)
  • inspectメソッドで配列やハッシュの中身を表示することができる

CSS

<%= stylesheet_link_tag "application", "data-turbo-track": "reload" %>
  • stylesheet_link_tagはCSSのリンクタグを生成する
  • Rubyのメソッドは丸カッコ( )を省略できる
  • ハッシュが引数の最後の場合波カッコ{ }を省略できる
  • Rubyのコードは改行と空白を区別しない
  • 一つ目の引数はCSSのパス、二つ目の引数はTurboの設定
  • ERBの中でcssをリンクしたlinkタグに変換される
  • cssファイルの名前は16進数の長い名前に変換されている(Rails側で実行されている)

※参考:stylesheet_link_tag | Railsドキュメント
※参考:Turbo: The speed of a single-page web application without having to write any JavaScript.

クラスのコンストラクタ

  • オブジェクトの中でメソッドにまとめたいものをクラスを使う
  • インスタンスを生成するとクラスも自動的に生成されている(省略されている=リテラル)
  • インスタンスオブジェクトに.classメソッドを付けるとstringクラスなどクラスの種類がわかる
  • newメソッドで省略せずにクラスを生成することもできる(=コンストラクタ)
  • 文字列コンストラクタString.new、配列コンストラクタArray.new、ハッシュコンストラクタHash.new
  • ハッシュコンストラクタに引数がない場合はnill、引数あるとその値が初期値になる
  • クラスメソッドはクラスが直接呼び出すメソッド(.で繋ぐ)
  • インスタンスメソッドはインスタンスが呼び出すメソッド(.#で繋ぐ)

クラスの継承

  • クラスの継承元の親クラスをsuperclass、継承先の子クラスをsubclassという
  • superclassメソッドで親クラスを調べられる(連続で繋ぐと先祖を辿れる)
  • クラスを定義するとき、クラス名のあとに< 親クラス名で親クラスが継承される(親クラスのメソッドも継承される)
  • selfはオブジェクト自身を表す
  • Rubyは組み込みクラスも変更できるが、正当な理由がない限りは変更しない方がいい

ユーザークラス

  • Userクラスを作成する
  • アクセサー(accessor) を作成name:など:をつける
  • それによって@nameなど@がついたインスタンス変数にアクセスできる
  • initializeUser.new実行時に自動的に実行されるメソッド
  • Railsコンソールでrequireでファイルを読み込む
  • User.newを実行、メソッドを実行できる
  • マスアサインメント:User.new実行時に引数にハッシュを入れて実行する

終わりに

4章はRailsコンソールでメソッドを実行したりクラスを作成したりして、Ruby本体の理解を深めるような内容でした。5章はBootstrapを使ってCSSスタイルを追加していく内容になるようです。

なお、今回からよりコーディングや学習の方にリソースを割いていくため、ブログは箇条書きメモ方式にしていこうと思います。

それではまた!


Ruby/Ruby on Railsを習得するためにやったこと まとめ qiita.com