なにかのまねごと

A Journey Through Imitation and Expression

Rails勉強会@東京第36回に行ってきた

 今も勉強会中なんだけど、自分の頭じゃ追いつかないレベルの話が展開されてるので、前半にやった初心者向け講座のメモを残しておきます。

**Scaffoldの半歩先へ
 講師:yuum3氏 http://d.hatena.ne.jp/yuum3/
 資料:http://www.ey-office.com/blog.htmlの
    Ruby on Rails入門セミナー 2008年4月25日と
    ほぼ同じものを使われていました。

  開発環境
    IDE (RadRails NetBeans 3rdRail)
    TextMateなど。
    極めればCUI一本で超速く開発できるよ。

  Rails本は一冊はまず読むべき。
  Rubyの入門書もちゃんと読む
  おすすめはYugui著『初めてのRuby』
  演習問題のコードとかちゃんと書く。
  Railsのメジャーアップは2年に一回くらい。
  ドキュメントは、まずはExampleを読む。

とりあえずtodoアプリを作ってみよう。

kze$ rails todo
      create  
      create  app/controllers
      create  app/helpers
      create  app/models
      (中略:いろいろと必要なファイルを作ってる。)
      create  doc/README_FOR_APP
      create  log/server.log
      create  log/production.log
      create  log/development.log
      create  log/test.log
kze$ cd todo/
kze$ ls
README		config		lib		script		vendor
Rakefile	db		log		test
app		doc		public		tmp
#こんなディレクトリ構成ができ上がる。
kze$ ./script/generate --help
Usage: ./script/generate generator [options] [args]
      (中略:generateのヘルプ)
kze$ ./script/generate scaffold --help
Usage: ./script/generate scaffold ModelName [field:type, field:type]
      (中略:generateのヘルプ)
kze$ ./script/generate scaffold todo due:date task:string
      exists  app/models/
      exists  app/controllers/
      (中略:scaffoldでモデルとかコントローラとか作った。)
kze$ rake --tasks
(in /Users/kze/program/ruby/rails/todo)
      (中略:rakeの使い方)
kze$ rake db:migrate
(in /Users/kze/program/ruby/rails/todo)
==  CreateTodos: migrating ====================================================
-- create_table(:todos)
   -> 0.0036s
==  CreateTodos: migrated (0.0041s) ===========================================

kze$ ./script/server
#これでWebサーバが動く。
#http://localhost:3000/todos にアクセス。
#簡単なtodoアプリが出来ている。

練習問題:todoを日付順にソートしてみよう
正解:app/controllers/todos_controller.rbのindexメソッドを次のように書き直す。

  def index
#    @todos = Todo.find(:all)
    @todos = Todo.find(:all, :order => 'due')
  dateとかstringはRailsの型 RubyやDBの型じゃない。
  とりあえず動かしてみてCookieがどうたらのエラーが
 出ることがあるがそれはあんまり気にしないでリロード。
  
  Railsのディレクトリ構成(一部のみ抜粋)
    config 設定
    public HTML/CSS/JSなど
    vender プラグインなど
  
  app/helper モデルとはちょっと違うかな?というものを置いとく。
       表示の補助。
  
  RESTをちゃんと勉強する。

  コントローラからviewに渡せるのはインスタンス変数(@hoge)のみ。
  
  SQLインジェクションを防ぎたければプレースフォルダを使え。
  
  flashは次のページまで有効なセッション
  
  :stringなどはシンボルで特殊な文字列だと思っていい。
    
  log/development.logをたくさん見る。SQL文が出たりするので、
 それを参考にする。
  配列やオブジェクトはinspactで見やすく表示することができる。
  Rails版irbは./script/console 
  
  ・ユニットテスト
    絶対書く。
    完璧を目指さず出来るところからやる。
    
  ・実行環境
    apache(mod_proxy_balancer) + Mongrel
    
  ・プラグイン
    Restful authentication : ログイン認証一式
    
  ・先に進むには
    ソースコードを読む
    なにか作ってみる
    コミュニティー・勉強会への参加
    Blogを書く