BETA

Rails Tutorialやってみた! 06

投稿日:2019-03-10
最終更新:2019-03-13

100DaysOfCode 7/100

4章 Rails風味のRuby

provideとyield

3章でもサラッと出てきましたが、ちょっと不安になったのでおさらいします。

  • provide 供給する、備える

  • yield 生み出す、産出する

<% provide(:title, "Home") %>  
<h1>Sample App</h1>  
<p>  
  This is the home page for the  
  <a href="https://railstutorial.jp/">Ruby on Rails Tutorial</a>  
  sample application.  
</p>

provideで:titleに文字列”Home”を供給し、

<%= yield(:title) %> | Ruby on Rails Tutorial Sample App

yieldで:title(=”Home”)を生み出す。みたいなイメージでしょうか??

Rubyの仕様いろいろ

  • putsの戻り値はnil

  • Rubyではあらゆるものがオブジェクトであり、オブジェクトにはメソッドを渡すことができる
    下記は文字列がオブジェクトとして動作している例(empty?メソッドに応答できている!)

>> "foobar".empty?  
=> false  
>> "".empty?  
=> true
  • オブジェクトそのものの論理値がfalseになるのは、false自身とnilのみ
!!0  
=> true
  • すなわち数字0もtrue

module

  • 関連するメソッドを一つにまとめることができる
  • モジュールをincludeすることによって、モジュール内のメソッドが利用できるようになる(ミックスイン)

application_helper.rbに記述したヘルパーメソッドはApplicationHelperというモジュールの一部。

RailsではApplicationHelperモジュールのincludeを自動で行ってくれるので、ヘルパーメソッドが全てのビューで利用できるということ。

ハッシュとシンボルおさらい

  • ハッシュ 配列のインデックスとして0, 1, 2…以外(文字列やシンボル)を使えるもの
    ハッシュの値にハッシュを含めたりすることもある

  • シンボル ハッシュのインデックスとして一般的に使われるオブジェクト
    一見文字列に似ているが、文字列とは異なり同名のシンボルはオブジェクトとしても全く同一であったり、破壊的変更ができなかったりする

merge

Ruby API (訳注: もしくはるりまサーチ) を使って、Hashクラスのmergeメソッドについて調べてみてください。次のコードを実行せずに、どのような結果が返ってくるか推測できますか? 推測できたら、実際にコードを実行して推測があっていたか確認してみましょう。
{ “a” => 100, “b” => 200 }.merge({ “b” => 300 })

https://docs.ruby-lang.org/ja/search/query:merge/

{“a” =>100, “b” => 300}になる。あってました。

リテラルコンストラクタ

s = "hello"

実は、このコードでは文字列のインスタンスを作成している。
これをリテラルコンストラクタという

s = String.new("hello")

厳密に書けばこういうこと。

組み込みクラスの変更

  • Rubyでは組み込みクラスを拡張してメソッドを追加することもできるが、正当な理由なしにやることは非推奨。

  • Railsは正当な理由でメソッドの追加を行っている。
    例えば、変数が空白でないことをチェックするメソッドblank?は、純粋なRubyにはない。

attr_accessor

  • ゲッターとセッターをまとめて作ってくれる
class User  
  #ゲッター  
  def name  
    @name  
  end  
  #セッター  
  def name=(value)  
    @name = value  
  end  
end

これを、

Class User  
  attr_accesor :name  
end

だけで記述できる。

example_user.rbの作成

https://github.com/ta-mmc/sample_app/blob/master/example_user.rb

終わりに

  • 一気にプログラミング色が強くなってきましたが、この章ではチェリー本で学んだことがかなり役立ちました。
    Railsだけでなく、Rubyについて知っておくことも大切ですね。

  • ブロックに関する内容の理解が怪しいのでちょっと復習しておきます……。

  • Progateを触っていたときに謎の呪文だと思っていたattr_accessorですが、今回しっかり調べたことで腑に落ちました。謎の呪文でも何でもなかった。

  • オブジェクト指向関連については、プログラミング学習初期に読んだスッキリわかるJava入門という本が非常にわかりやすかったです。今後不安になったときに読み返したいです。
    https://book.impress.co.jp/books/1113101090

技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

@tammcの技術ブログ

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう
目次をみる
技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
or 外部アカウントではじめる
10秒で技術ブログが作れます!