2013/04/27

HerokuでSSL接続

ただのメモです。SSL接続環境の利用についての詳細はこちらで確認して下さい。
独自のドメインや証明書を利用する場合は有償みたいですが、私は以下のドメインを利用させていただいているので(Piggyback SSLなので)特に設定等の必要もなくhttpsでの接続が可能です。
  • myapp.heroku.com/ 
  • myapp.herokuapp.com/

2013/04/25

FulcrumをHerokuへ設置

 $ git clone git://github.com/malclocke/fulcrum.git
 $ cd fulcrum
 $ bundle install --without development test
 ~
 Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.
 $ heroku login
 Enter your Heroku credentials.
 Email: <-- メールアドレスを入力
 Password (typing will be hidden): <-- パスワードを入力
 Authentication successful.
 $ heroku create アプリケーション名
  !    Name is already taken
 $ vi config/initializers/gramil.rb <-- Gmailを使う設定を実施
 $ git init
 $ git add .
 $ git commit -m 'initial'
 $ git push heroku master
 $ heroku rake db:setup
 $ heroku open

Shell変数

基礎

シェル変数の特徴的な部分は、定義と参照で表記が変わる点です。
定義の際は、「変数=値」といったスタイルで記載しますが、参照の際は、「${変数}」という形で変数を表記します。
もう一つ定義する際は、「=」と変数、値の間は連続している必要があります。スペースなどを間に入れてしまうとエラーになるので注意が必要です。

位置パラメータ

シェルスクリプトで引数を利用するときに必要な概念です。
スクリプト実行時に渡された引数は、位置パラメータという特殊な変数を通して参照します。
位置パラメータは、ドル記号「$」とそれに続く数字1文字で構成されます。$1 $2 $3 ・・・といったスタイルで、数字の部分が引数の位置を表します。
数字1文字と書きましたが、これでは9個までしか引数を受け取れないということになってしまいます。9個以上の引数を扱いたい場合は、「shift」コマンドを利用します。shiftコマンドを実行すると位置パラメータが参照する引数がずれる、つまり$1が第2引数、$2が第3引数を参照するといった具合です。
例えば、以下の内容でtest.shを作成し、実行してみると動きがわかります。

#!/bin/sh

while [ 0 -le $# ]
do
  echo $1
  shift
done
実行すると10個以上の引数をshiftコマンドを使って参照をずらし$1で順番に参照できているのが分かります。
$ sh test.sh a b c d e f g h i j k l m
a
b
c
d
e
f
g
h
i
j
k
l
なお、「$#」は引数の数が可能される特殊変数の一種です。 では、test.shを以下の通り変更するとどうなるか見てみましょう。
#!/bin/sh

while [ 0 -le $# ]
do
  echo $1
  shift 2
done
実行例は以下の通りです。
$ sh test.sh a b c d e f
a
c
e
上記の実行例を見ると分かると思いますが、参照が2個づつスライドしています。このようにshiftコマンドにスライドさせたい数をしていることで指定した数だけ参照をずらすことが可能です。 もう1とつ忘れていけないのが「$0」は何を参照しているかということです。
#!/bin/sh

echo $0
実行例は以下の通りです。
$ sh test.sh
test.sh

$0は上記の通りスクリプト名を参照しています。

特殊変数

$-(ダラー・ハイフン)

シェル起動時のフラグを保持しています。
シェル起動時のフラグとはシェルオプションと言われるもので、$-は有効になっているシェルオプションを表現するフラグの文字列として表現したものです。
この変数の内容を出力していみると以下のように表示されます。このhimBHという文字列がシェル起動時のフラグです。

 $ echo $-
 himBH

ではシェルオプションにはどういったものがあるか見てみます。シェルオプションの一覧を表示するにはsetコマンドを使います。出力例は以下の通りです。
$ set -o
allexport       off
braceexpand     on
emacs           on
errexit         off
errtrace        off
functrace       off
hashall         on
histexpand      on
history         on
igncr           off
ignoreeof       off
interactive-comments    on
keyword         off
monitor         on
noclobber       off
noexec          off
noglob          off
nolog           off
notify          off
nounset         off
onecmd          off
physical        off
pipefail        off
posix           off
privileged      off
verbose         off
vi              off
xtrace          off

各シェルオプションとフラグの関係は下表の通りです。

シェルオプション フラグ 説明
allexport a 変数代入時に自動的にexportを実行する。
braceeexpand B プレース展開を有効にする。
emacs - emacs入力モードを有効にする。
errexit e コマンドが異常終了ステータスで終了するした場合にシェルを終了する。
errtrace E
functrace T
hashall h コマンドの位置を記憶し、検索時間を短縮する。
histexpand H !(exclamation point:エクスクラメーション・ポイント)によるヒストリの置換を有効にする。
igncr -
ignoreeof -
interactive-comments -
keyword k ?
monitor m ジョブコントロールを有効にする。
noclobber C すでに存在するファイルへのリダイレクトを禁止する。
noexec n
noglob f ワイルドカード(*、?)の展開を禁止する。
nolog -
notify b バックグラウンドジョブが終了した際の通知を有効にする。
nounset u 未設定パラメータへの参照をエラーにする。
onecmd t ?
physical P cd/cwdで-Pオプション(シンボリックによるパスではなく実際のパスを表示)を常に有効にする。
pipefail -
posix -
plivileged p 特権モードを有効にする。
verbose v コマンド入力時にエコー表示する。
vi - vi入力モードを有効にする。
xtrace x コマンド実行時に、展開後のコマンド行表示を有効にする。
対話モードの場合はiフラグが立ちます。以下のように対話モードであるか検出する例を見かけたりします。
[[ "$-" != *i* ]] && return

ブレース展開

{}(ブレース)で囲まれた短縮表現を展開することです。
呼んでもサッパリ分からないと思いますので、とりあえず以下の例を見てください。

 $ echo {a..z}
 a b c d e f g h i j k l m n o p q r s t u v w x y z
{}(ブレース)で囲まれた短縮表現の「a..z」が展開されて出力されているのが分かると思います。
また、固定の文字列と組み合わせてこんな使い方もできます。
 $ for v in test_{01..09}.log; do
 > echo ${v};
 > done
 test_01.log
 test_02.log
 test_03.log
 test_04.log
 test_05.log
 test_06.log
 test_07.log
 test_08.log
 test_09.log
可変部分を短縮表記でなくても動作します。
 $ for v in test_{a,b,c}.log; do
 > echo $v
 > done
 test_a.log
 test_b.log
 test_c.log
空文字的なものも含めることができます。
 $ for v in test{,.log}; do
 > echo ${v}
 > done
test
test.log
*(アスタリスク)も利用できます。アスタリスクは該当するファイル名に展開されるようです。
 $ echo {.vimrc,.*}
 .vimrc . .. .bash_history .bash_profile .bashrc .gem .gitconfig .inputrc .profile .screenrc .ssh .vim .viminfo .vimrc

2013/04/18

VimライクなキーバインドでChromeを操作

好みの問題かもしれませんが、私はプログラミングしている最中などはキーボードのみですべての操作したくなります。もちろブラウザの操作も例外ではありません。ショートカットキーなるものがあるので、これを覚えればキーボードのみでそれなりに操作することは可能ですが、覚えるのって結構めんどくさいです。
メインのブラウザはChromeなのでなにか便利な拡張機能はないかと探してみたところVimiumなるものを見つけました。Vimのキーバインドを利用してChromeを操作できるということなので、結構きにいって利用してます。
サイトによってはうまく動作しないケースもあります(例えばBloggerで記事を書いているときとか)がそれなりに使てますのでよろしかったら使ってみてください。

機能


柔軟にカスタマイズ可能なショートカット機能を提供しています。
また、ショートカットの中でもいくつか面白い機能があるので後ほど紹介します。

ショートカットを調べる

ショートカットですが、詳細を紹介するようなことは、ここではしません。
?」でヘルプ画面が表示されるので、慣れるまで(忘れたりしたとき)はこれで確認してください。

find mode

Vimiumには「find mode」というモードがあります。Vimで文字列検索するのと同じ感覚で「/」でfind modeに切り替えると検索窓が右下に表示されます。



キーワードを入力してEnterってやると検索を実行してくれます。「n」で次を検索、「N」で戻るって感じでvimライクな操作が可能です。ただ、残念なのがシングルバイトのキーワードしか扱え無い点です。日本語での検索ができないので英語のサイトを見ない人にはいまいちですかね。。。

リンクのショートカット表示

便利な機能をもう1つご紹介します。「a-f」とキー操作して下さい。


画面に表示されているリンクにショートカットを動的に割り当ててくれます。リンクの横に黄色で表示されているやつです。表示されているショートカットキーを入力すると該当するリンクをたどってくれます。find modeでは日本語入力ができないので、日本語のサイトではあまり使う機会がありませんが、こちらは日本語でも対応できるので結構つかえると思います。ちなみに英大文字でショートカットは表示されていますが、小文字で反応してくれるので手軽に利用できます。
忘れそうになりましたが、ショートカットをクリアする場合は「Esc」です。

2013/04/17

SourceTreeのインストール

仕事でGitHubを利用することになったのですが、Git関連の知識・スキルが習熟していないメンバーが多い中、NetBeansのGitサポートも弱いことが分かり、GUIで分かりやすく安定したクライアントでいいものはないかということで、アトラシアン社製のGitクライアントを利用することにしました。

今後、少しづつ情報を整理していこうと思いまずはインストール編です。

対象のバージョン

今回対象とするSourceTreeのバージョンは、1.0.8 です。

SourceTreeインストール条件

対応している分散バージョン管理システム(DVCS)はGitMercurialです。
Windowsは7以降がインストール条件となっています。
また、Mac OS も10.6以降であれば対応していています。

なお、今回はGitのみの利用を想定した手順となります。

料金

トライアル期間がついておりまずは無償で利用できます。トライアル期間以降はユーザ登録をすることで無償での利用を継続することができます。

インストール

アトラシアンのダウンロードページからバイナリをダウンロードします。
ダウンロードした「SourceTreeSetup_1.0.8.exe」をクリックしインストーラを起動します。

インストーラが起動します。インストールするには[Next >]ボタンをクリックします。



インストールフォルダの選択画面が表示されます。インストール先をデフォルトから変更する場合は[Browse...]ボタンをクリックし変更します。インストール先が決まったら[Next >]ボタンをクリックします。


[Install]ボタンをクリックしてインストールを開始します。


インストールが開始されます。


インストールが終了したら[Finish]ボタンをクリックします。


SourceTreeの初回起動時にMercurialがインストールされていない場合、以下のダイアログが表示されます。Mercurialは利用しないので[I don't want to use Mercurial]をクリックします。


初期設定画面が表示されます。

コミット時に利用するユーザ名とメールアドレスを設定します。
デフォルト値を変更する場合は、[Full Name]と[Email address]欄に入力します。

[Allow SourceTree to modify your global Git and Mercurial config files]は、SourceTreeに対してグローバル設定ファイルに対する変更を許可するかどうかを指定します。コマンドラインから実行する場合も同じ設定で利用したい場合はデフォルト(チェックがついたままの)状態にします。

[Configure automatic line ending handling by default (recommended)]は、ファイルの改行コードに関する処理を自動にするかどうかを指定します。これを有効にするとコミット時などに改行コードをLFに自動で変換します。個人的にはOFFにするがお勧めです。

[I agree to the SourceTree license agreement]は、ライセンス規約に同意するかの確認です。同意する場合はチェックし[Next]ボタンをクリックします。



SSHクライアントの設定を行います。
Windows環境の場合は、[Use PuTTY/Plink (recommended)]を利用するのがお勧めです。
クライアントを選択したら[Next]ボタンをクリックします。


SSHキーの設定を行うかの確認です。
HTTPSで接続するので[No]をクリックします。
なお、SSHで接続する場合は[Yes]ボタンをクリックしてキーをロードして下さい。


[Finish]ボタンをクリックし初期設定を完了します。


SourceTreeが起動すればインストールと初期設定の完了です。


2013/04/14

Shuttle XS35GT V2

今回は、Shuttle製のベアボーンキット「XS35GT V2」を利用して自作したPCの記録です。
構成の目立はなんといっても金額です。合計は約2万円です。

パーツリスト

パーツ名 メーカー 製品名 (購入)価格
ベアボーン シャトル XS35GT V2 10,500
メモリ ディラック AVD3S13330904G-1SW(SODIMM DDR3 PC3-10600) 3,304
HDD WESTERN DIGITAL WD5000BPVT 4,935

合計「18,739円」です。安いですねー!すばらしい。

XS35GT V2

Shuttle製のベアボーンキットです。
外観はこんな感じです。ファンレスで上部、左右の通気口から放熱するので縦置きです。



スペックは以下の通り。詳細はShuttle Japanのページでご確認下さい。

製品名XS35GT V2
対応CPUIntel Atom D525(1.8GHz)
チップセットIntel NM10
対応メモリーDDR3-800 SO-DIMM×1、最大4GB
グラフィックス機能NVIDIA ION、グラフィックスメモリー:DDR3 512MB、DirectX 10.1サポート
サウンド機能2ch Audio(IDT92HD81 Audio Codec)
通信機能有線:Gigabit Ethernet(JMicron JMC251) 無線:IEEE 802.11b/g/n
拡張スロット非搭載
ドライブベイスリムドライブ(薄型5インチ)/内部2.5インチ共用ベイ×1、内部2.5インチ×1
外部インターフェース前面:USB 2.0×1、メモリーカードリーダー(SDメモリーカード/MMC/メモリースティック/メモリースティック Pro)
背面:HDMI、アナログRGB、USB 2.0×4、LAN×1、オーディオ出力(ステレオ)×1、マイク入力×1、ACアダプター
内部インターフェースSerial ATA 3Gbps×2、PCI Express Mini Card×1(無線LANカードを搭載済み)
電源40W ACアダプター
外形寸法(幅、奥行き、高さ)38.4×252×162mm
付属品マニュアル、ドライバーDVD、ACアダプター、薄型5インチベイ用Serial ATA変換アダプター、2.5インチドライブ用マウンター

セットアップ

OSはCent OS 6.3です。なお64bitには未対応です。
インストール時はUSBの外付けドライブを利用しました。
特に苦労することもなくすんなりインストールが完了し正常にブート、問題なく利用できています。

参考情報


2013/04/13

Application Express(APEX:管理コンソール)のポート変更

Application Express(APEX)のポート変更の手順です。
>sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on 火 7月 1 10:52:33 2008
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production
に接続されました。
SQL> exec dbms_xdb.sethttpport(5050);
PL/SQLプロシージャが正常に完了しました。
SQL>

2013/04/12

GitHubでリポジトリ操作

リポジトリの作成

右上のノート型(?)のアイコンをクリックします。


リポジトリのメタ情報を入力する画面が表示されます。


以下の情報を入力して Create Repository ボタンをクリックします。


  • Repository name : リポジトリ名
  • Description : リポジトリの説明


リポジトリの作成完了です。

リポジトリの削除

削除対象のリポジトリを選択します。


Setting をクリックします。


Delete this repositoryをクリックします。


ダイアログが表示されるので入力欄に削除対象のリポジトリ名を入力します。
正しいリポジトリ名が入力されるとI understand the consequences, delete this repositoryというボタンがアクティブになるのでクリックします。



Cygwinパッケージの中身

自分が利用したいコマンドがCygwinのどのパッケージに入っていたかよく忘れるので、調べたらなるべくメモしようと。

inetutilsパッケージ

以下のコマンドが含まれています。

  • telnet

2013/04/10

MongoLabとは?

サンフランシスコのObjectLabsがサーブしているクラウドベースのデータベース環境です。データベース環境といってもいわゆるリレーショナルデータベースではなく、ネーミングから分かるとおりMongoDBを利用したサービスです。NoSQLってやつですね。
一般的に使われているのか分かりませんが、DBaaS(DataBase-as-a-service)なんて言葉も使われているようで、クラウドが浸透しているのを実感します。

Free Plan

MongoLabでは、50MBまで無料で利用することができます。
アカウントの登録は以下の流れでできます。

MongoLabのサイトにアクセスします。右上の「Log in」ボタンをクリックすると登録画面が表示されます。


全ての項目に入力して「Create」ボタンをクリックすると登録完了です。


登録を終えるとメールが送られてきますが、存在確認などは特にありません。
そのまま「Home」画面が表示されます。



この「Home」画面からデータベースの作成等の管理オペレーションを行うことができます。

2013/04/04

段階見積りの根拠

バリー・ベーム(1981) 不確実性コーン ことばはスティーブ・マコネル。
PMI(プロジェクトマネジメント協会)も同様の見解。
初期見積り:誤差+75%~-25%
概算見積り:+25%~-10%
詳細見積り:+10%~-5%

良い計画作りの特徴

  • リスクを軽減する
  • 不確実性を減らす
  • 意思決定を支援する
  • 信頼を確立する
  • 情報を伝達する
課題1
  • どの程度計画すれば適切か?
  • 計画を立てるべき理由は?
  • うまくいったプロジェクトで計画づくりはどんな役割を果たしていたか?

2013/04/03

BloggerでSyntax Highlighter(v3)

BloogerでSyntax Highlighter(v3)を利用する方法のメモです。

Syntax Highlighter(v3)の適応はBloggerのテーマのHTMLに、Web上に公開されているSyntax Highlighter(v3)のスタイルシートやらJavaScriptやらを参照するためのスクリプトを張り付けることによって行います。以下には詳細な手順を記載します。

1. スクリプト生成サイトにアクセスする

way2bloggingのこちらのページの中段あたりにある『HOW TO INSTALL SYNTAX HIGHLIGHTER IN BLOGGER?』というセクション内にGenerate Scriptsというイメージがあります。これをクリックし、スクリプトを生成するページに遷移します。


2. テーマを選択

スクリプト生成ページ上では、まずテーマを選択します。


テーマを選ぶにあたりイメージを確認したくなります。こちらのサイトで確認できます。テーマを選択すると上にイメージが表示されます。



3. プログラミング言語を選択

次にスクリプト生成ページ上で利用するプログラミング言語を選択します。あまりたくさん選択しすぎると読み込むスクリプトの量が増えたりするのでパフォーマンスが劣化するのでご注意を!


4. スクリプトの生成

Generateボタンをクリックしスクリプトを生成します。


5. スクリプトのコピー

生成されたスクリプトをCopy To ClipBoardイメージをクリックしてクリップボードにコピーします。


6. テンプレートのHTMLに張り付け

Bloggerのダッシュボードを表示しメニューからテンプレートを選択します。HTMLの編集をクリックし</head>タグのすぐ上あたりにスクリプトを張り付けます。


動作確認して問題なければ以上で終了です。

2013/04/02

アジャイル開発 第1歩

某SIerに勤務する私にとってはWF開発な環境が当たり前になってます。Web系企業の方や各種イベントで散々アジャイル開発ということばを聞いてきたが、前述の通りしっくりこないのが現状です。WF開発のアンチテーゼとしてのアジャイルなんて周りではよく語られていたりしますが、アジャイルに興味をもった点はチームとしての開発、価値中心の開発といったものに対するあこがれだったりします。
とりあえずアジャイル開発について勉強しようと思い立ち決意を込めてこの記事をポストします。
自分のまわりでは、アジャイルといっても結構人によって頭に描いているものが違ったりするのですが、アジャイルな人たちにの間ではそんなことないんでしょうか?勉強していけば答えが分かったりしますかねぇ?

Mongrelの利用

Ruby1.9系でMongrelを利用する方法です。
確認したのは、バージョン1.9.3p125です。

Gemfileに以下を追記します。

gem "mongrel", ">= 1.2.0.pre2"

bundlerでインストールします。
 > bundle install

動作確認して終了です。

 >rails s mongrel
 => Booting Mongrel
 => Rails 3.2.13 application starting in development on http://0.0.0.0:3000
 => Call with -d to detach
 => Ctrl-C to shutdown server
 Connecting to database specified by database.yml

2013/04/01

HerokuのアプリケーションIDについて

Heroku上にホスティングするアプリケーションには一意のIDが割り振られます。このIDなるものが割り振られるタイミングは createコマンド実行時になります。create コマンドを実行するとアプリケーションIDはHeroku側で適当に付けられてしまいます。以下のように指定しなかった場合ですが。
 > heroku create
このIDなるものはアプリケーションを公開する際のサブドメインとして利用されます。Heroku側で適当に付けられたIDでちょっとな感じなので、できれば自分で指定したいですね。自分でIDを命名するには以下の通り引数にアプリケーションIDを指定します。
 > heroku create アプリケーションID
自分で付けられるといってもサブドメインとして利用されることから予想できると思いますがアプリケーションIDはHeroku上で一意でないといけない感じなので、ほかの人が使ってるIDは利用できませんのでご注意を!個人的にはすでに使いたいIDがかなり使えなかったりする状態ですが。。。
なお、存在するIDを指定すると以下の通り表示されます。
 > heroku create アプリケーションID
 Name is already taken
また、IDを変更するにはrenameコマンドを使ってください。
 > heroku rename アプリケーションID
変更した際ですが、アプリケーションIDはリポジトリ名としても利用されています。不一致のままだと管理しづらいので以下のコマンドを実行してリポジトリ名も変更しておきましょう。
 > git remote rm heroku
 > git remote add heroku git@heroku.com:新しいアプリケーションID.git

Rakeコマンド

rakeコマンドはJavaでいうところのAntのようなビルドツールです。Antと同様にタスクという単位で処理を実行し、タスクの依存関係を定義することもできます。
rakeコマンドは、コマンド実行時にカレントディレクトリにあるRakefileを読み込んで処理を行います。(Antがbuild.xmlを読み込んで処理を行うのと同様です。)大きく違うのはデフォルトのタスクが存在するのと、独自にタスクを定義する場合は、Rakefileに直接書くのではなくlib/tasks以下に.rakeという拡張子を付けたファイルを配置し、そこにタスクを定義する点の2点です。

タスクの確認方法

デフォルトの状態でたくさんのタスクが定義されているので、どんなタスクが定義されているか確認する手段を理解しておくのは重要です。
rakeコマンドは以下のオプションを指定することにより定義済みのタスクを確認することができます。

 > rake --tasks (または -T)
 rake about              # List versions of all Rails frameworks and the env...
 rake assets:clean       # Remove compiled assets
 rake assets:precompile  # Compile all the assets named in config.assets.pre...
 rake db:create          # Create the database from DATABASE_URL or config/d...
 rake db:drop            # Drops the database using DATABASE_URL or the curr...
 rake db:fixtures:load   # Load fixtures into the current environment's data...
 rake db:migrate         # Migrate the database (options: VERSION=x, VERBOSE...
 rake db:migrate:status  # Display status of migrations
 rake db:rollback        # Rolls the schema back to the previous version (sp...
 rake db:schema:dump     # Create a db/schema.rb file that can be portably u...
 rake db:schema:load     # Load a schema.rb file into the database
 rake db:seed            # Load the seed data from db/seeds.rb
 rake db:setup           # Create the database, load the schema, and initial...
 rake db:structure:dump  # Dump the database structure to db/structure.sql. ...
 rake db:version         # Retrieves the current schema version number
 rake doc:app            # Generate docs for the app -- also available doc:r...
 rake log:clear          # Truncates all *.log files in log/ to zero bytes
 rake middleware         # Prints out your Rack middleware stack
 rake notes              # Enumerate all annotations (use notes:optimize, :f...
 rake notes:custom       # Enumerate a custom annotation, specify with ANNOT...
 rake rails:template     # Applies the template supplied by LOCATION=(/path/...
 rake rails:update       # Update configs and some other initially generated...
 rake routes             # Print out all defined routes in match order, with...
 rake secret             # Generate a cryptographically secure secret key (t...
 rake stats              # Report code statistics (KLOCs, etc) from the appl...
 rake test               # Runs test:units, test:functionals, test:integrati...
 rake test:recent        # Run tests for {:recent=>"test:prepare"} / Test re...
 rake test:single        # Run tests for {:single=>"test:prepare"}
 rake test:uncommitted   # Run tests for {:uncommitted=>"test:prepare"} / Te...
 rake time:zones:all     # Displays all time zones, also available: time:zon...
 rake tmp:clear          # Clear session, cache, and socket files from tmp/ ...
 rake tmp:create         # Creates tmp directories for sessions, cache, sock...

データベース関連のタスク

タスクの一覧を見ると分かりますが、データベース関連のタスクにはdb:というプレフィックスが定義されています。これらのタスクを利用してデータベース関連の操作を行います。

マイグレーション

マイグレーションを実行するには db:migrateタスクを実行します。
 > rake db:migrate

マイグレーションの状態確認

 > rake db:migrate:status

ロールバック

データベースの状態を1世代前にロールバックするには db:rollback タスクを実行します。
 > rake db:rollback
指定した世代分ロールバックするには STEP オプションを指定します。
以下は5世代前を指定する例です。
 > rake db:rollback STEP=5

ルーティング関連のタスク

Railsではルーティングをconfig/routes.rbに定義します。ファイルを参照することにより定義したルーティング情報を確認することはできますが、直観的に理解するにはrakeコマンドを利用した方が賢明です。
 > rake routes