FrontPage

アプリケーションの雛形を作る

# rails アプリケーション名

カレントディレクトリにアプリケーション名のディレクトリができ、その中に必要なファイルが展開される。

サーバーを実行する

  • WEBrick という Ruby のライブラリによるサーバーが起動する。
  • デフォルトの状態で 0.0.0.0:3000 になる。
  • http://127.0.0.1:3000/ でアクセスできる。
# cd yourapp
# ruby script/server

コントローラの雛形を作る

# ruby script/generate controller コントローラ名
  • URL では http://.../コントローラ名 に配置される。
  • app/controlers/コントローラ名.rb として以下のようなファイルができる
class コントローラ名 < ApplicationController
end

コントローラのデフォルト動作を設定する (index)

  • コントローラの index メソッドを定義する。
class コントローラ名 < ApplicationController
  def index
    # "Hello, world!" を表示
    render_text "Hello, world!"
  end
end
  • いわゆる index.html みたいなものと言えばよいか。
  • URL では http://.../コントローラ名/ と http://.../コントローラ名/index が相当する。

コントローラの動作を設定する

  • コントローラにメソッドを定義する。
class コントローラ名Controller < ApplicationController
  def メソッド名
     # "Hello, world!" を表示
    render_text "Hello, world!"
  end
end
  • URL では http://.../コントローラ名/メソッド名 が相当する。

DB との接続

  • config\database.yml を編集する。(YAML 形式)
  • development: は開発用、test: はテスト用、production: は実稼動用になっている。
  • adapter: に RDBM の種別を書く。
  • database: にデータベース名(スキーマ)を書く。
  • host: にデータベースのあるホスト名を書く。
  • ポート番号がデフォルトと異なるなら、port: にポート番号を書く。
  • username: にユーザー名
  • password: にパスワードを書く。
development:
  adapter: mysql
  database: yourdb
  username: dbusername
  password: dbpassword
  host: localhost
  port: 12345

PostgreSQL の場合

ドライバのインストール

C 版の場合

# gem install postgres

pure Ruby 版の場合(Windows ではこっちが安全と思う)

# gem install postgres-pr

database.yml の設定

development:
  adapter: postgresql

エンティティテーブルを作る

  • エンティティテーブルには id 列が必ず必要。
    • PostgreSQL なら SERIAL, MySQL なら INTEGER NOT NULL AUTO_INCREMENT にしておく。
  • created_on 列, update_on 列のタイムスタンプがあれば、そこに作成時刻、更新時刻を設定してくれる。
  • モデルはテーブルから定義を読み出す。

モデルの雛形を作る

# ruby script/generate model モデル名
  • モデル名は単数形にする。
  • app/models/モデル名.rb として以下のようなファイルができる
class モデル名 < ActiveRecord::Base
end

scaffold での雛形を作る

  • コントローラとモデルの雛形を作り、scaffold を適用した状態にする。
# ruby script/generate scaffold モデル名
  • モデル名は単数形にする。

流れについて

  • http://.../コントローラ名/メソッド名 でアクセスする。
  • app/controller/コントローラ名.rb の該当メソッドが対応する。(入力と、出力用データの作成をする。)
    • この時、app/model/モデル名.rb を使って、モデルに対するデータアクセスをする。
  • app/views/コントローラ名/メソッド名.rhtml でコントローラの出力の表示(整形処理)を行う。
    • 「コントローラ名/メソッド名」で決め打ちなのでデフォルトでは設定不要。(雛形の rhtml がそこにできている)
    • コントローラで render, render_action を使い、別のビューを再利用することができる。
    • コントローラで redirect_to を使い、別のアクションに遷移させることができる。

テーブルの結合(JOIN)

「10分で作るRailsアプリ for Windows」 でやってること

http://masuidrive.jp/rails/

  • ActiveScriptRuby をインストールする。
    • ActiveScriptRuby のインストーラをダウンロードする。
    • ダウンロードしたインストーラを実行する。
    • C:\ruby にインストールする。
  • RubyGems をインストールする。
    • RubyGems をダウンロードする。
    • RubyGems を展開する。
    • 展開したファイルの中の setup.rb を実行する。
  • Ruby on Rails をインストールする。
    • コマンドラインから以下を実行する。
      gem install rails --remote --include-dependencies
      • プロキシがある場合は以下を追加。サイト名は当然合わせること。
        set HTTP_PROXY=http://proxy.example.com:8080
  • MySQL をインストールする。
    • MySQL をダウンロードする。
    • Windows Essentials (必須コンポーネントのみ)
    • MySQL Tools をダウンロードする。(MySQL 管理ツール(MySQL Administrator) のため。)
    • インストールは Typicalでよい。
    • Skip Sign-Up で MySQL.com へのアカウント作成は飛ばす。
  • データベースを作成する。
    • MySQL Administrator を起動する。
    • データベース(スキーマ)を作成する。
    • New Schema を選択する。
    • bookmark データベースとする。
  • テーブルを作成する。
    • items テーブルとする。
id INTEGER PRIMARY KEY
url VARCHAR(255)
title VARCHAR(255)
  • データベースユーザーを作成する。
    • ここではユーザー名 bmuser、パスワード bmuser で作成。
  • Rails の雛形を作成する。
    • Ruby console を起動する。
    • アプリケーション名は bookmark とする。
> rails bookmark
> cd bookmark
  • item モデルの雛形を作成する。
> ruby script\generate model item
  • item コントローラの雛形を作成する。
> ruby script\generate controller item
  • config\database.yml を編集する。
development:
  adapeter: mysql
  database: rails_development ←この行にデータベース名を指定する。
  host: localhost
  username: ←この行にデータベースのユーザー名を指定する。 
  password: ←この行にデータベースのパスワードを指定する。
development:
  adapeter: mysql
  database: bookmark
  host: localhost
  username: bmuser
  password: bmuser
  • Rails サーバーを起動する。
> ruby script\server
  • ブラウザからアクセスする。
http://localhost:3000/
http://localhost:3000/items
  • app\controllers\item_controller.rb を編集する。
class ItemController < ApplicationController
  scaffold :item  ←これを追加
end

実際のところここでわかるのは

  • DB のテーブル定義から直接 Ruby オブジェクトへマッピングしてる
  • よくわかんないけど scaffold はすごいねー

ということ…

さて、ここからどうするかが問題なんですが…

国際化/日本語化

  • 日本語onlyなら日本語化でいいんだけど、日本語+英語とか会社で使うなら国際化の方にすべきだと思う。
  • なんか余計なパッケージみたいなのも一緒にくっついてんのはモジュール的に美しくないなぁ。
    • ActiveHeart の TranSid は別個にあるとよいと思う。

問題

  • Ruby-GetText で、Windows 上で rake updatepo すると、msgmerge がないのでエラーになる。
    C:\proj>rake updatepo
    (in C:/proj)
    po/proj.pot
    C:/ruby/bin/rake: No such file or directory - msgmerge po/proj.pot tmp.pot
    rake aborted!
    You have a nil object when you didn't expect it!
    You might have expected an instance of Array.
    The error occurred while evaluating nil.empty?
    C:/proj/rakefile:15
    (See full trace by running task with --trace)
  • Grade/GTK+ for Windows http://gladewin32.sourceforge.net/modules/news/ をインストールして、その中の msgmerge を使う。
  • 参考 http://www.yotabanana.com/lab/20060910.html

命名

  • テーブル名
    • アンダーバー区切りの単語
    • 複数形
    • 大文字小文字の区別は SQL にはない(はず)
  • カラム名
    • アンダーバー区切りの単語
    • 単数形
    • 大文字小文字の区別は SQL にはない(はず)

テーブル名を変える。

テーブル名を変更する

rename_table → Rails/migration

モデル名とテーブル名が違う名前になっている場合

class モデル名 < ActiveRecord::Base
  set_table_name :テーブル名

テーブル名を国際化する。

Ruby-GetText-Package の場合、 "モデル名" で po ファイルに抜かれるのでそちらで修正。

カラム名(項目名)を変える。

カラム名を変更する。

rename_column → Rails/migration

カラム名を日本語化する。

モデルクラスに set_field_names をつける。

class Article < ActiveRecord::Base
  set_field_names :title => 'タイトル', :body => '本文'
end

カラム名を国際化する。

Ruby-GetText-Package の場合、 "モデル名|カラム名" で po ファイルに抜かれるのでそちらで修正。

データ型

http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/TableDefinition.html

:primary_key
:string
:text
:integer
:float
:decimal
:datetime
:timestamp
:time
:date
:binary
:boolean

APIメモ

  • View 関係のメソッドは ActionView::Base, ActionView::Partials, ActionView::Helpers::* にあり。

メモ

書籍

#amazon(4798013951) #amazon(4274066401)

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2007-05-02 (水) 10:09:08 (1224d)