読者です 読者をやめる 読者になる 読者になる

railstutorial.jp 4章メモ

rails
rails console

コメント
文字列
式展開 #{first_name}はダブルクォートのなかのみ
putsはput string

nil.to_s.empty?
“".nil?
nil.nil?

Rubyにおいてifがfalseになるのはfalseとnilのみ

if nil then true else false end #=> false
if 0 then true else false end #=> true

Rubyは最後の評価値が自動的に返される

moduleはクラスにincludeすることでmixed inできる
ヘルパーモジュールの場合はRailsが自動的にインクルードするので全ビューで利用可能

配列

a = [ 42, 8, 17]
a.first
a.second
a.last == a[-1] #=> true
a.length
a.push(6)
a << 7
a << "foo" << “bar"
a.join
a.join(‘,’)

Range

0..9
(0..9).to_a

%w

a = %w[foo bar baz quux]
a[0..2] # インデックスの範囲指定

区切り文字は何でもいいぽい

a = %w|foo bar baz quux|
a = %w@foo bar baz quux@

ブロック

(1..5).each { |i| puts 2 * i }
(1..5).each do |i|
  puts 2 * i

end

3.times { puts "Betelgeuse!" } 

 (1..5).map { |i| i**2 }  # **はべき乗
('a'..'z').to_a.shuffle[0..7].join
# アルファベットの配列をシャッフルして最初の8要素を取り出して連結
('a'..'z’)
('a'..'z’).to_a

('a'..'z’).to_a.shuffle
('a'..'z’).to_a.shuffle[0..7]
('a'..'z’).to_a.shuffle[0..7].join

ハッシュとシンボル

user = { "first_name" => "Michael", "last_name" => "Hartl” }

ハッシュの要素の順番は1.9以降保証されるようになった
ハッシュロケット =>
ハッシュのキーはシンボルを使うのが一般的

user = { :name => "Michael Hartl", :email => "michael@example.com” }
# Ruby1.9 以降は、新しい記法でJavaScriptぽく書ける
{ name: "Michael Hartl", email: "michael@example.com” }

オブジェクトを文字列にするinspectメソッド便利メソッド

puts :name, :name.inspect, "name”.inspect

pは putsとinspectを合わせた効果。phpでいうvar_dumpやprint_r

省略された記法のルールと読み方

関数呼び出しの丸括弧は省略可能

stylesheet_link_tag("application", media: "all", "data-turbolinks-track" => true)
stylesheet_link_tag "application", media: "all", "data-turbolinks-track" => true

最後の引数がハッシュの場合、波括弧は省略可能

# data-turbolinks-track: trueになっていないのは、新しいハッシュ記法ではハイフンが使えないため。
stylesheet_link_tag "application", { media: "all", "data-turbolinks-track" => true }
stylesheet_link_tag "application", media: "all", "data-turbolinks-track" => true

コンストラクタ

文字列

s = “foobar”
s.class
s = String.new(“foobar”)

配列

a = [1,3,2]
a = Array.new([1, 3, 2])

ハッシュだけコンストラクタの引数がデフォルト値になる

h = {}
h = Hash.new
h[:hoge] # => nil 存在しないキーはnil
h = hash.new(0)
h[:hoge] # => 0 存在しないキーのデフォルト値になる

new メソッドはクラスメソッド

クラス

superclassメソッド
Ruby1.9以降、ObjectクラスのスーパークラスとしてBasicObjectがある
Rubyは定義済みのクラスの拡張ができる(オープンクラス
たとえばRailsではblank?メソッドが追加されていて、Railsコンソールではその拡張も読み込まれる

Railsコンソールでコントローラのアクションも呼べる

controller = StaticPagesController.new

controller.home

Railsコンソールで相対パスからロードもできる

require ‘./example_user'

attr_accessor

インスタンス変数 @name
initializeはnewを実行するときに呼ばれるメソッド

ハッシュ引数を使用してオブジェクトを初期化する手法、マスアサインメント(mass assignment)