2014年6月19日木曜日

puts と print と nil

 putsメソッドはprintと違って、最後に改行が出力されるそうな。もっち違いがあるのかもしれないけど、とりあえず今はこれだけ。
irb(main):014:0> print 'unko'
unko=> nil
irb(main):015:0> puts 'unko'
unko
=> nil
irb(main):016:0> print "unko\n"
unko
=> nil
irb(main):017:0>
どちらも、副作用的にリテラル(文字列)'nil' を返り値として返すそうです。
 'nil'はRubyで無を意味する値。

rails console

 Railsコンソールは、Railsアプリケーションを対話的に実行できるコマンドラインツール。素晴らしい学習ツールだとRailsチュートリアルは言っております。

 スタックから抜けるにはCtrl+C、コンソールを完全に終了させるにはCtrl+Dだそうです。
$ rails console
Loading development environment (Rails 4.1.0)
irb(main):001:0> first_word = "foo"
=> "foo"
irb(main):002:0> second_word = "bar"
=> "bar"
irb(main):003:0> "#{first_word} #{second_word}"
=> "foo bar"
irb(main):004:0> '#{first_word} #{second_word}'
=> "\#{first_word} \#{second_word}"
irb(main):005:0>
 とかね。

 どうでもいいけど、fooとかbarとか、よく出てくるけどなんだろうかと思ったら、日本で言うhogeとかpiyoと同じらしい。
 前の会社で詳しい人がこういうのよく使っていて、なんか内輪用語みたいで気持ち悪いな、と思っていたんですよね。素人相手にはオタクっぽいから使わない方がいいんじゃないかと。
 で、そういうのと同じなんですね。でもこれは郷に入れば郷に従えというやつでしょうかね。素直に受け入れましょう…。

メタ構文変数

ハッシュとは?シンボルとは?

 ハッシュって意味が分からない。
 配列の値を特定するためのキーは通常の配列では数値(インデックス)だけど、ハッシュ(連想配列)では文字列を使うみたい。
irb(main):049:0> user = {} #ハッシュを定義、初期化する
=> {}
irb(main):050:0> user["u"] = "unko"
=> "unko"
irb(main):051:0> user["a"] = "anko"
=> "anko"
irb(main):052:0> user["u"]
=> "unko"
irb(main):053:0> user #リテラルな表記で返される
=> {"u"=>"unko", "a"=>"anko"}
irb(main):054:0> user = { "p" => "pink", "t" => "tank" } #複数同時に代入できる
=> {"p"=>"pink", "t"=>"tank"}
irb(main):055:0> user
=> {"p"=>"pink", "t"=>"tank"}
ちょっとわかった気がする。
 でもシンボルはもっとわからない。Railsではハッシュではなくシンボルの方がよく使うそうです。
シンボルはハッシュのキーとして利用するのですが、"unko"のようなリテラルではなく :unko のように頭にコロンを置きます。しかもRuby1.9からは下記のような表記も許され、一般的になっているそうな。大混乱。
{ :name => "unko", :email => "unko@unko.com" }
{ name: "unko", email: "unko@unko.com" }
2番目の表記ではシンボルにハイフンが使えないんですって。更に大混乱。ルールが細かい。
 チュートリアルではシンボルについて明解な説明は無かった?読み飛ばしたのかな。結局、なぜRailsではシンボルを主に使用するのか、よくわからなかった。書式はなんとなくわかったけど。

参考:

2014年6月18日水曜日

ファイル名・テーブル定義等のルール(規約)

ファイル名の規約
ディレクトリ
ファイル
クラス名
親クラス

app/controllers/
xxxs_controller.rb
XxxController
ApplicationController

app/models/
xxx.rb
Xxx
ActiveRecord::Base

app/views/xxxs/
yyy.html.erb

app/views/layouts/
xxx.html.erb

app/helpers/
xxxs_helper.rb

db/migrate/
YYYYMMDDhhmmss_mmm_xxxs.rb
MmmXxxs
ActiveRecord::Migration

test/fixtures/
xxx.yml

テーブル名とクラス名
  • テーブル名は複数形
  • 単語の区切りはアンダーバー(_)
  • 対応するクラス名は単語の先頭を大文字にして _ を取り除いたもの

キーのカラム名
  • 主キーのカラム名は「id」
  • 外部キーのカラム名は「テーブル名の単数_id」

日付関連のカラム名
  • DATE型のカラムには名前を 「受動態_on」
  • TIMESTAMP型のカラムには名前を「受動態_at」
  • 更新日時、作成日時は「updated_at」、「created_at」

結合テーブル
  • 関連させたいテーブル名をくっつけた名前にする
  • カラム「id」を作らずに、関連させる2つのキーのセットを主キーにする

Railsプロジェクトのファイル構成

 とりあえず覚えられません。勉強しながら何度も見返します。