Hatena::ブログ(Diary)

cod.note

移転しました: http://blog.sorah.jp/

2010-02-14

Rails基礎文法最速マスター

題材: メモツール

簡単なメモを登録削除更新したりできるWebアプリ作りましょう

Railsインストール

sqlite3-rubyも必要ですが、ここでは割愛します

$ gem install rails

プロジェクトの作成

$ rails memo

./memoにrailsの基盤が展開される

MVC最速マスター

Modelデーターベースの操作に使う。独自のメソッドを定義したりリレーションシップを楽に扱えたりする RailsだとActiveRecordが担当する
ViewRailsだとWebへの表示を担当する。この場合erbやHamlが該当する。標準だとerb。ActiveViewが担当する
Controller表示などのコントロールを担当する。データの登録などはここ。ようするにWebアプリの頭脳 ActionControllerが担当するはず

Scaffold最速マスター

Scaffoldという雛形(作成編集表示削除一覧の機能をもつ)を作成しそれをいじって高速な開発ができる

最近の2.x系Railsだとモデルとmigrateも(後述)最速作成してくれるのでとてもvenry.

注意: script/*の実行はWindowsだとruby script/としないと実行できない

$ script/generate scaffold <名前> <カラム名>:<型>[<カラム名>:<型>]..

が基本形。名前は単数形(Railsは単数形複数形を使い分ける)

$ script/generate scaffold memo name:string body:text

を実行する

migrate

db/migrateにmigrateファイルというのが作成される。

データーベースの構造のバージョン管理的な感じで、

$ rake db:migrate

データベースにテーブルなどががりがり生成される

生成されたファイル群

app/controllers/*_controller.rbコントローラ
app/models/*.rbモデル
app/views/*/*.html.erbビュー

見るだけでだいたいわかる。直感で。

実行

$ script/server

ポート番号3000でテスト用の鯖が起動します


http://localhost:3000/memos/

/コントローラ名/ID/アクション

/コントローラ名/アクション

URLになります。コントローラは基本的に複数形らしい(scaffoldだと)

あとはすきかっていじりましょう

認証

BASIC認証を使って制限を加えましょう。ただし書き込みのみ。

app/controllers/memos_controller.rbを編集する


1,2行目の間に

  before_filter :auth, :only => [:create,:destroy,:update,:new,:edit]

を挟み込む。

処理の前にauthメソッドを実行、ただしcreate,destroy,update,new,edit以外では実行しない

という意味

:onlyから跡を消せば全部BASIC認証がかかる

そしてコントローラ(クラス定義)の最後にメソッドを追加

protected
  def auth
    authenticate_or_request_with_http_basic do |username, password|
      username == 'rails' && password == 'saisokumaster'
    end
  end

あとはテスト。

極める

ここから先は最速とはいえなくなるので本をお薦めします

自分がRailsの学習に使ったのはこれの英語版(Ebook)

英語版

Head First Rails
Head First Rails
posted with amazlet at 10.02.14
David Griffiths
Oreilly & Associates Inc
売り上げランキング: 168483

あとはこれ、なんかいいらしい!


以上で最速マスターは終了です。

gigi-netgigi-net 2010/02/14 21:44 マジレスすると、2.x系統ではScaffoldはプラグインの扱いになっているので、インストール作業が必要だったはずです!
script/plugin install scaffolding

だったかなー?

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

Connection: close