ここでは,Rails Application, Tracksの振舞いを見てみる。
Tracks を動かすのは簡単だ。自分は Rails 2.3.3 の環境を構築して,SQLite3,libsqlite3-ruby をインストールすれば準備完了。Download ページから 1.7 release を展開して,rake db:migdate を実行した後,server を実行する(databaseのconfigは用意されてある)。
起動してみて,webブラウザでアクセスすると,コンソールに以下の内容が表示される。
192.168.1.102 - - [08/Oct/2009:21:57:59 JST] "GET / HTTP/1.1" 302 97
- -> /
192.168.1.102 - - [08/Oct/2009:21:57:59 JST] "GET /login HTTP/1.1" 302 101
- -> /login
192.168.1.102 - - [08/Oct/2009:21:58:00 JST] "GET /users/new HTTP/1.1" 200 2523
- -> /users/new
どうやら login controller を経由して,users_controller の new アクションを実行している模様。
config/routes.rb の内容を確認してみると,
ActionController::Routing::Routes.draw do |map|
map.with_options :controller => 'login' do |login|
login.login 'login', :action => 'login'
login.formatted_login 'login.:format', :action => 'login'
login.logout 'logout', :action => 'logout'
login.formatted_logout 'logout.:format', :action => 'logout'
end
# snip
とあるので,login controller の login action を呼びだしている模様。login.login とか login.formatted_login とかが何を表現しているのかがよくわからない。これは "/login" や "login.m" というリクエストに対して名前をつけたと考えていいのだろうか?このことを確認するため,ユーザ登録後に "/login","/login.m","/login.xml" というリクエストを発行した。login_controller の login method の最後の方に,こんな表示がある。
respond_to do |format|
format.html
format.m { render :action => 'login_mobile.html.erb', :layout => 'mobile' }
従って最後の "/login.xml" は xml 形式のrespondが定義されていないので,何も表示されない。実際に "/login.xml" では何も表示されない。また "/login.m" ではいかにも携帯電話用のログイン画面が表示された。さて,login_controller.rb の内容に戻ってみる。
def login
if openid_enabled? && using_open_id?
login_openid
else
@page_title = "TRACKS::Login"
case request.method
# snip
when :get
if User.no_users_yet?
redirect_to :controller => 'users', :action => 'new'
return
end
end
# snip
end
end
とあるので,ユーザを未登録の場合,users controller の action new へ redirect されているのがわかる。
次にユーザ(admin)を登録してみる。コンソール出力は以下の通り。
192.168.1.102 - - [08/Oct/2009:22:52:51 JST] "POST /users HTTP/1.1" 302 92
http://192.168.1.101:3000/users/new -> /users
192.168.1.102 - - [08/Oct/2009:22:52:52 JST] "GET / HTTP/1.1" 200 10825
http://192.168.1.101:3000/users/new -> /
192.168.1.102 - - [08/Oct/2009:22:53:01 JST] "GET /stylesheets/cache/bundle.css?1255009973 HTTP/1.1" 200 29449
http://192.168.1.101:3000/ -> /stylesheets/cache/bundle.css?1255009973
192.168.1.102 - - [08/Oct/2009:22:53:01 JST] "GET /behaviours/index.js HTTP/1.1" 304 0
http://192.168.1.101:3000/ -> /behaviours/index.js
192.168.1.102 - - [08/Oct/2009:22:53:01 JST] "GET /javascripts/cache/bundle.js?1255009981 HTTP/1.1" 200 247440
http://192.168.1.101:3000/ -> /javascripts/cache/bundle.js?1255009981
次から users_controller.rb の内容を追ってみようと思う。
No comments:
Post a Comment