2009年7月18日土曜日

[Railsのキホン][翻訳] Rails Wiki : List of Generators (2)

List of Generators => Rails Wiki を訳してみました。
Cocomo on Rails : [Railsのキホン][翻訳] Rails Wiki : List of Generators (1) の続きです。

mailer

スタブは、新しいメーラーとそのビューを生成します。引数にメーラー名(CamelCasedかunder_scored形式)と、(optionで)emailのリストを与えます。

このスタブは、app/models にメーラークラスを、app/views/mailer_name にビューテンプレートを、test/unit にユニットテストを、test/fixtures にテストフィクスチャを生成します。

Example

./script/generate mailer Notifications signup forgot_password invoice

(実行結果)

exists app/models/
create app/views/notifications
exists test/unit/
create test/fixtures/notifications
create app/models/notifications.rb
create test/unit/notifications_test.rb
create app/views/notifications/signup.erb
create test/fixtures/notifications/signup
create app/views/notifications/forgot_password.erb
create test/fixtures/notifications/forgot_password
create app/views/notifications/invoice.erb
create test/fixtures/notifications/invoice

で、ActionMailer がなんなのかわからない。こちらに詳しい説明がありました。

plugin

スタブは新しいプラグインを生成します。引数に、プラグイン名(CamelCasedかunder_scored形式)を渡します。-with-generator 引数を渡すことで、example generator を作成できます。

このスタブは、vender/plugins に init.rb, README, lib, task, test directory を含むプラグインを生成します。

Example

./script/generate plugin BrowserFilters

(実行結果)

create vendor/plugins/browser_filters/lib
create vendor/plugins/browser_filters/tasks
create vendor/plugins/browser_filters/test
create vendor/plugins/browser_filters/README
create vendor/plugins/browser_filters/MIT-LICENSE
create vendor/plugins/browser_filters/Rakefile
create vendor/plugins/browser_filters/init.rb
create vendor/plugins/browser_filters/install.rb
create vendor/plugins/browser_filters/uninstall.rb
create vendor/plugins/browser_filters/lib/browser_filters.rb
create vendor/plugins/browser_filters/tasks/browser_filters_tasks.rake
create vendor/plugins/browser_filters/test/browser_filters_test.rb
create vendor/plugins/browser_filters/test/test_helper.rb

scaffold

モデル、マイグレーション、コントローラ、ビュー、すべてのテスト一式を含むScaffold(足場)を生成します。生成されたリソースは、RESTful, resource-oriented なアプリケーションのスターティングポイントとなります。

引数にsingular formのモデル名(CamelCaseかunder_scored)と(optionで)属性ペアのリストを与えます。

(属性ペアの説明は model と同じなので省略)

たとえば、scaffold post title:string body:text published:boolean は、3つの属性をもつモデル、create/show/update/destoroy を扱うコントローラ、post を生成・編集するためのフォーム、すべてのpostをリストするインデックスリスト、(coufig/routes.rb内に)map.resources :posts 定義を生成します。

Example

./script/generate scaffold purchase order_id:integer amount:decimal

(実行結果)

exists app/models/
exists app/controllers/
exists app/helpers/
create app/views/purchases
exists app/views/layouts/
exists test/functional/
exists test/unit/
exists test/unit/helpers/
exists public/stylesheets/
create app/views/purchases/index.html.erb
create app/views/purchases/show.html.erb
create app/views/purchases/new.html.erb
create app/views/purchases/edit.html.erb
create app/views/layouts/purchases.html.erb
create public/stylesheets/scaffold.css
create app/controllers/purchases_controller.rb
create test/functional/purchases_controller_test.rb
create app/helpers/purchases_helper.rb
create test/unit/helpers/purchases_helper_test.rb
route map.resources :purchases
dependency model
exists app/models/
exists test/unit/
exists test/fixtures/
create app/models/purchase.rb
create test/unit/purchase_test.rb
create test/fixtures/purchases.yml
exists db/migrate
create db/migrate/20090718093148_create_purchases.rb

session_migration

ActiveRecord session store で使用されるセッションテーブルを追加するためのマイグレーションを生成します。引数にマイグレーション名(CamelCasedかunder_scored)を与えます。

Example

./script/generate session_migration CreateSessionTable

(実行結果)

exists db/migrate
create db/migrate/20090718093613_create_session_table.rb

生成されたマイグレーションを見てみます。
class CreateSessionTable < ActiveRecord::Migration
def self.up
create_table :sessions do |t|
t.string :session_id, :null => false
t.text :data
t.timestamps
end

add_index :sessions, :session_id
add_index :sessions, :updated_at
end

def self.down
drop_table :sessions
end
end

metal

metalを生成します!(説明なし)

(metal とは、比較的新しく追加された機能のようです。高速なコントローラ?)

Example

./script/generate metal poller

(実行結果)

create app/metal
create app/metal/poller.rb

生成された雛形を見てみます。


# Allow the metal piece to run in isolation
require(File.dirname(__FILE__) + "/../../config/environment") unless defined?(Rails)

class Poller
def self.call(env)
if env["PATH_INFO"] =~ /^\/poller/
[200, {"Content-Type" => "text/html"}, ["Hello, World!"]]
else
[404, {"Content-Type" => "text/html"}, ["Not Found"]]
end
end
end
コントローラに、HTTPヘッダ情報とレスポンスが直接書かれています。
script/server を立ち上げて、http://localhost:3000/poller にアクセスしたところ。


observer

新しいオブザーバーを生成します。引数に、オブザーバ名(CamelCasedかunder_scored形式)を与えます。

generator は、app/models にオブザーバークラス、test/unit にユニットテストを生成します。

Example

./script/generate observer Account

(実行結果)

exists app/models/
exists test/unit/
create app/models/account_observer.rb
create test/unit/account_observer_test.rb

オブザーバってなによ?という説明は(ActiveRecord::ObserverのRDoc翻訳)はこちらにありました。特定のクラスのメソッドを監視し、メソッドが呼ばれたら指定したメールアドレスにメールを送信する、という機能のようです。もちろん、ただメールアドレスを書くだけではだめで、config/environment.rb に設定を書いておく必要があります。

続き

0 件のコメント:

コメントを投稿