SproutCore で Hello World Tutorial。その1

AppleMobileMe(.Mac)に採用されているらしい javascript フレームワーク SproutCore を試用してみようかと思ったのでとりあえずインストールしてみました。環境は mac osx 10.4.11。

手順

  1. RubyGems(と Ruby)をインストール
  2. SproutCore をインストール
  3. Hello World

1. RubyGems(と Ruby)をインストール

10.4 なので、まずは RubyGems(と Ruby)をインストールする必要が。MacPort で手軽に済ませます。

$ sudo port install rb-rubygems

rb-rubygemsruby と依存関係?(Library Dependencies: ruby)なので、上記のコマンドで ruby もインストールされます。因に、バージョンは ruby 1.8.7-p22, Revision 2 でした。

2. SproutCore をインストール

これ以下は 公式サイトのドキュメント の通りです。
詳細が書かれていなかったので、色々とインストールを始めた時には少々面食らいましたが。

$ sudo gem install sproutcore
Bulk updating Gem source index for: http://gems.rubyforge.org/
Building native extensions.  This could take a while...
Building native extensions.  This could take a while...
Building native extensions.  This could take a while...
Successfully installed activesupport-2.1.0
Successfully installed abstract-1.0.0
Successfully installed erubis-2.6.2
Successfully installed rake-0.8.1
Successfully installed json_pure-1.1.2
Successfully installed rspec-1.1.4
Successfully installed rack-0.3.0
Successfully installed hpricot-0.6
Successfully installed mime-types-1.15
Successfully installed merb-core-0.9.3
Successfully installed rubigen-1.3.2
Successfully installed gem_plugin-0.2.3
Successfully installed daemons-1.0.10
Successfully installed fastthread-1.0.1
Successfully installed cgi_multipart_eof_fix-2.5.0
Successfully installed mongrel-1.1.5
Successfully installed sproutcore-0.9.11
17 gems installed
Installing ri documentation for activesupport-2.1.0...
Installing ri documentation for rake-0.8.1...
Installing ri documentation for json_pure-1.1.2...
Installing ri documentation for rspec-1.1.4...
Installing ri documentation for rack-0.3.0...
Installing ri documentation for hpricot-0.6...
Installing ri documentation for mime-types-1.15...
Installing ri documentation for merb-core-0.9.3...
Installing ri documentation for rubigen-1.3.2...
Installing ri documentation for gem_plugin-0.2.3...
Installing ri documentation for daemons-1.0.10...
Installing ri documentation for fastthread-1.0.1...

No definition for dummy_dump

No definition for dummy_dump

No definition for rb_queue_marshal_load

No definition for rb_queue_marshal_dump
Installing ri documentation for cgi_multipart_eof_fix-2.5.0...
Installing ri documentation for mongrel-1.1.5...
Installing ri documentation for sproutcore-0.9.11...
Installing RDoc documentation for activesupport-2.1.0...
Installing RDoc documentation for rake-0.8.1...
Installing RDoc documentation for json_pure-1.1.2...
Installing RDoc documentation for rspec-1.1.4...
Installing RDoc documentation for rack-0.3.0...
Installing RDoc documentation for hpricot-0.6...
Installing RDoc documentation for mime-types-1.15...
Installing RDoc documentation for merb-core-0.9.3...
Installing RDoc documentation for rubigen-1.3.2...
Installing RDoc documentation for gem_plugin-0.2.3...
Installing RDoc documentation for daemons-1.0.10...
Installing RDoc documentation for fastthread-1.0.1...

No definition for dummy_dump

No definition for dummy_dump

No definition for rb_queue_marshal_load

No definition for rb_queue_marshal_dump
Installing RDoc documentation for cgi_multipart_eof_fix-2.5.0...
Installing RDoc documentation for mongrel-1.1.5...
Installing RDoc documentation for sproutcore-0.9.11...

3. Hello World

適当なディレクトリでプロジェクトを作成します。
$ cd work
$ sproutcore hello_world
      create  
      create  clients
      create  frameworks
      create  lib
      create  public
      create  log
      create  README
      create  sc-config.rb
  dependency  client
      exists    clients
      create    clients/hello_world
      create    clients/hello_world/english.lproj
      create    clients/hello_world/core.js
      create    clients/hello_world/english.lproj/body.css
      create    clients/hello_world/english.lproj/body.rhtml
      create    clients/hello_world/english.lproj/strings.js
      create    clients/hello_world/main.js
      readme    ../README
Your new SproutCore client application has been created.  To access your application, just start sc-server and visit your client name in the web browser.

If you want to change the deployment settings for your application edit the sc-config.rb file to get started.
作成されたディレクトリ内で sc-server を起動します。
$ cd hello_world/
$ sc-server
Running SproutCore Build Tools v0.9.11
Welcome to SproutCore
 ~ Not Using Sessions
 ~ Using Mongrel adapter
ブラウザでサーバへアクセスします。

http://localhost:4020/hello_world
色々始まってまたしても面食らった後、ブラウザにドキュメント通りの Welcom! 画面が表示されます。

 ~ Building Html: index.html
 ~ Request: /hello_world
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>2.014524, :before_filters_time=>5.3e-05, :after_filters_time=>8.9e-05, :dispatch_time=>2.016226}
 ~ 

 ~ Request: /static/sproutcore/_src/english.lproj/detect-browser
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.207155, :before_filters_time=>5.0e-05, :after_filters_time=>5.5e-05, :dispatch_time=>0.208357}
 ~ 

~ Building Stylesheet: icons.css
 ~ Request: /favicon.ico
 ~ Request: /static/sproutcore/en/_cache/icons-1214471551.css
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ Request: /static/sproutcore/en/_cache/menu-1214471551.css
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ Request: /static/sproutcore/en/_cache/panes-1214471551.css
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ Request: /static/sproutcore/en/_cache/core-1214471551.css
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.271365, :before_filters_time=>5.1e-05, :after_filters_time=>0.000107, :dispatch_time=>0.274888}
 ~ 

~ Building Stylesheet: menu.css
 ~ Request: /static/sproutcore/en/_cache/buttons-1214471551.css
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.229921, :before_filters_time=>5.5e-05, :after_filters_time=>5.5e-05, :dispatch_time=>0.410486}
 ~ 

~ Building Stylesheet: panes.css
 ~ Request: /static/sproutcore/en/_cache/picker-1214471551.css
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.660689, :before_filters_time=>5.7e-05, :after_filters_time=>6.8e-05, :dispatch_time=>1.048733}
 ~ 

~ Building Stylesheet: core.css
 ~ Request: /static/sproutcore/en/_cache/tab-1214471551.css
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.227693, :before_filters_time=>5.6e-05, :after_filters_time=>5.8e-05, :dispatch_time=>1.36762}
 ~ 

~ Building Stylesheet: buttons.css
 ~ Request: /static/sproutcore/en/_cache/tests-1214471551.css
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.724754, :before_filters_time=>8.6e-05, :after_filters_time=>7.5e-05, :dispatch_time=>1.858556}
 ~ 

~ Building Stylesheet: picker.css
 ~ {:action_time=>0.293681, :before_filters_time=>5.6e-05, :after_filters_time=>0.090392, :dispatch_time=>1.521575}
 ~ 

~ Building Stylesheet: tab.css
 ~ Request: /static/sproutcore/en/_cache/theme-1214471551.css
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ Request: /static/hello_world/en/_cache/body-1214531748.css
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.307443, :before_filters_time=>7.2e-05, :after_filters_time=>5.5e-05, :dispatch_time=>1.571672}
 ~ 

~ Building Stylesheet: tests.css
 ~ Request: /static/sproutcore/_src/english.lproj/images/sproutcore-logo.png
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.375222, :before_filters_time=>8.3e-05, :after_filters_time=>5.9e-05, :dispatch_time=>1.329338}
 ~ 

~ Building Stylesheet: theme.css
 ~ Request: /static/prototype/en/_cache/prototype-1214471551.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.47533, :before_filters_time=>5.2e-05, :after_filters_time=>8.0e-05, :dispatch_time=>1.221225}
 ~ 

~ Building Stylesheet: body.css
 ~ {:action_time=>0.436358, :before_filters_time=>6.6e-05, :after_filters_time=>5.6e-05, :dispatch_time=>1.455039}
 ~ 

~ Building Javascript: prototype.js
 ~ {:action_time=>0.223632, :before_filters_time=>5.5e-05, :after_filters_time=>5.7e-05, :dispatch_time=>1.274554}
 ~ 

 ~ Request: /static/sproutcore/_src/english.lproj/images/sticky-note.png
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.48421, :before_filters_time=>5.8e-05, :after_filters_time=>6.9e-05, :dispatch_time=>1.253666}
 ~ 

 ~ {:action_time=>0.226118, :before_filters_time=>5.3e-05, :after_filters_time=>5.9e-05, :dispatch_time=>0.475266}
 ~ 

~ Building Javascript: strings.js
 ~ Request: /static/sproutcore/en/_cache/strings-1214471551.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.066234, :before_filters_time=>5.4e-05, :after_filters_time=>6.5e-05, :dispatch_time=>0.068468}
 ~ 

~ Building Javascript: core.js
 ~ Request: /static/sproutcore/en/_cache/core-1214471551.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.265739, :before_filters_time=>5.2e-05, :after_filters_time=>6.6e-05, :dispatch_time=>0.267481}
 ~ 

~ Building Javascript: foundation/date.js
 ~ Request: /static/sproutcore/en/_cache/foundation/date-1214471551.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.165939, :before_filters_time=>5.0e-05, :after_filters_time=>7.0e-05, :dispatch_time=>0.167119}
 ~ 

~ Building Javascript: foundation/string.js
 ~ Request: /static/sproutcore/en/_cache/foundation/string-1214471551.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.080141, :before_filters_time=>5.2e-05, :after_filters_time=>6.6e-05, :dispatch_time=>0.081636}
 ~ 

~ Building Javascript: foundation/benchmark.js
 ~ Request: /static/sproutcore/en/_cache/foundation/benchmark-1214471551.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.370072, :before_filters_time=>5.1e-05, :after_filters_time=>6.8e-05, :dispatch_time=>0.371359}
 ~ 

~ Building Javascript: mixins/observable.js
 ~ Request: /static/sproutcore/en/_cache/mixins/observable-1214471551.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.106124, :before_filters_time=>5.1e-05, :after_filters_time=>6.9e-05, :dispatch_time=>0.107447}
 ~ 

~ Building Javascript: mixins/array.js
 ~ Request: /static/sproutcore/en/_cache/mixins/array-1214471551.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.213408, :before_filters_time=>4.9e-05, :after_filters_time=>6.4e-05, :dispatch_time=>0.21467}
 ~ 

~ Building Javascript: foundation/object.js
 ~ Request: /static/sproutcore/en/_cache/foundation/object-1214471551.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.092303, :before_filters_time=>5.1e-05, :after_filters_time=>6.7e-05, :dispatch_time=>0.093874}
 ~ 

~ Building Javascript: foundation/input_manager.js
 ~ Request: /static/sproutcore/en/_cache/foundation/input_manager-1214471551.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.1987, :before_filters_time=>5.1e-05, :after_filters_time=>7.0e-05, :dispatch_time=>0.19992}
 ~ 

~ Building Javascript: foundation/responder.js
 ~ Request: /static/sproutcore/en/_cache/foundation/responder-1214471551.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.100571, :before_filters_time=>5.0e-05, :after_filters_time=>6.6e-05, :dispatch_time=>0.101846}
 ~ 

~ Building Javascript: foundation/node_descriptor.js
 ~ Request: /static/sproutcore/en/_cache/foundation/node_descriptor-1214471551.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.116421, :before_filters_time=>5.0e-05, :after_filters_time=>6.5e-05, :dispatch_time=>0.117652}
 ~ 

~ Building Javascript: foundation/binding.js
 ~ Request: /static/sproutcore/en/_cache/foundation/binding-1214471551.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.354696, :before_filters_time=>4.9e-05, :after_filters_time=>7.0e-05, :dispatch_time=>0.355888}
 ~ 

~ Building Javascript: foundation/path_module.js
 ~ Request: /static/sproutcore/en/_cache/foundation/path_module-1214471551.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.080779, :before_filters_time=>5.1e-05, :after_filters_time=>6.6e-05, :dispatch_time=>0.081997}
 ~ 

~ Building Javascript: mixins/delegate_support.js
 ~ Request: /static/sproutcore/en/_cache/mixins/delegate_support-1214471551.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.365146, :before_filters_time=>5.1e-05, :after_filters_time=>6.2e-05, :dispatch_time=>0.366389}
 ~ 

~ Building Javascript: views/view.js
 ~ Request: /static/sproutcore/en/_cache/views/view-1214471552.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.367826, :before_filters_time=>5.1e-05, :after_filters_time=>8.7e-05, :dispatch_time=>0.36906}
 ~ 

~ Building Javascript: mixins/control.js
 ~ Request: /static/sproutcore/en/_cache/mixins/control-1214471551.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.083434, :before_filters_time=>4.8e-05, :after_filters_time=>6.6e-05, :dispatch_time=>0.084651}
 ~ 

~ Building Javascript: mixins/validatable.js
 ~ Request: /static/sproutcore/en/_cache/mixins/validatable-1214471551.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.179266, :before_filters_time=>5.0e-05, :after_filters_time=>6.6e-05, :dispatch_time=>0.180467}
 ~ 

~ Building Javascript: views/field/field.js
 ~ Request: /static/sproutcore/en/_cache/views/field/field-1214471552.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.210951, :before_filters_time=>4.9e-05, :after_filters_time=>7.3e-05, :dispatch_time=>0.212134}
 ~ 

~ Building Javascript: mixins/editable.js
 ~ Request: /static/sproutcore/en/_cache/mixins/editable-1214471551.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.070507, :before_filters_time=>5.0e-05, :after_filters_time=>6.6e-05, :dispatch_time=>0.07172}
 ~ 

~ Building Javascript: views/field/text_field.js
 ~ Request: /static/sproutcore/en/_cache/views/field/text_field-1214471552.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.224846, :before_filters_time=>5.1e-05, :after_filters_time=>6.5e-05, :dispatch_time=>0.226139}
 ~ 

~ Building Javascript: mixins/inline_editor_delegate.js
 ~ Request: /static/sproutcore/en/_cache/mixins/inline_editor_delegate-1214471551.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.141396, :before_filters_time=>5.0e-05, :after_filters_time=>6.4e-05, :dispatch_time=>0.142643}
 ~ 

~ Building Javascript: views/inline_text_field.js
 ~ Request: /static/sproutcore/en/_cache/views/inline_text_field-1214471552.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.170455, :before_filters_time=>5.2e-05, :after_filters_time=>7.4e-05, :dispatch_time=>0.171773}
 ~ 

~ Building Javascript: views/label.js
 ~ Request: /static/sproutcore/en/_cache/views/label-1214471552.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.40527, :before_filters_time=>6.7e-05, :after_filters_time=>5.9e-05, :dispatch_time=>0.406482}
 ~ 

~ Building Javascript: views/button/button.js
 ~ Request: /static/sproutcore/en/_cache/views/button/button-1214471552.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.226857, :before_filters_time=>5.6e-05, :after_filters_time=>6.9e-05, :dispatch_time=>0.229512}
 ~ 

~ Building Javascript: views/popup_button.js
 ~ Request: /static/sproutcore/en/_cache/views/popup_button-1214471552.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.210118, :before_filters_time=>5.3e-05, :after_filters_time=>6.8e-05, :dispatch_time=>0.211387}
 ~ 

~ Building Javascript: mixins/selection_support.js
 ~ Request: /static/sproutcore/en/_cache/mixins/selection_support-1214471551.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.128329, :before_filters_time=>5.1e-05, :after_filters_time=>6.6e-05, :dispatch_time=>0.12961}
 ~ 

~ Building Javascript: controllers/controller.js
 ~ Request: /static/sproutcore/en/_cache/controllers/controller-1214471551.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.199813, :before_filters_time=>4.7e-05, :after_filters_time=>7.0e-05, :dispatch_time=>0.200984}
 ~ 

~ Building Javascript: controllers/object.js
 ~ Request: /static/sproutcore/en/_cache/controllers/object-1214471551.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.079556, :before_filters_time=>5.5e-05, :after_filters_time=>6.7e-05, :dispatch_time=>0.081599}
 ~ 

~ Building Javascript: controllers/collection.js
 ~ Request: /static/sproutcore/en/_cache/controllers/collection-1214471551.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.083416, :before_filters_time=>5.2e-05, :after_filters_time=>6.6e-05, :dispatch_time=>0.084927}
 ~ 

~ Building Javascript: views/pagination.js
 ~ Request: /static/sproutcore/en/_cache/views/pagination-1214471552.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.185931, :before_filters_time=>4.8e-05, :after_filters_time=>6.7e-05, :dispatch_time=>0.187114}
 ~ 

~ Building Javascript: views/error_explanation.js
 ~ Request: /static/sproutcore/en/_cache/views/error_explanation-1214471552.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.068697, :before_filters_time=>5.0e-05, :after_filters_time=>6.4e-05, :dispatch_time=>0.069971}
 ~ 

~ Building Javascript: foundation/page.js
 ~ Request: /static/sproutcore/en/_cache/foundation/page-1214471551.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.309262, :before_filters_time=>4.9e-05, :after_filters_time=>7.0e-05, :dispatch_time=>0.310438}
 ~ 

~ Building Javascript: drag/drag.js
 ~ Request: /static/sproutcore/en/_cache/drag/drag-1214471551.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.576193, :before_filters_time=>5.3e-05, :after_filters_time=>6.1e-05, :dispatch_time=>0.577483}
 ~ 

~ Building Javascript: drag/drag_data_source.js
 ~ Request: /static/sproutcore/en/_cache/drag/drag_data_source-1214471551.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.099407, :before_filters_time=>5.5e-05, :after_filters_time=>6.7e-05, :dispatch_time=>0.100685}
 ~ 

~ Building Javascript: views/radio_group.js
 ~ Request: /static/sproutcore/en/_cache/views/radio_group-1214471552.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.172076, :before_filters_time=>5.2e-05, :after_filters_time=>6.7e-05, :dispatch_time=>0.173272}
 ~ 

~ Building Javascript: panes/pane.js
 ~ Request: /static/sproutcore/en/_cache/panes/pane-1214471551.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.173692, :before_filters_time=>4.9e-05, :after_filters_time=>6.8e-05, :dispatch_time=>0.174882}
 ~ 

~ Building Javascript: views/container.js
 ~ Request: /static/sproutcore/en/_cache/views/container-1214471552.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.185801, :before_filters_time=>5.0e-05, :after_filters_time=>6.6e-05, :dispatch_time=>0.186977}
 ~ 

~ Building Javascript: panes/overlay.js
 ~ Request: /static/sproutcore/en/_cache/panes/overlay-1214471551.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.088412, :before_filters_time=>4.9e-05, :after_filters_time=>6.4e-05, :dispatch_time=>0.089622}
 ~ 

~ Building Javascript: panes/panel.js
 ~ Request: /static/sproutcore/en/_cache/panes/panel-1214471551.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.07184, :before_filters_time=>5.0e-05, :after_filters_time=>6.8e-05, :dispatch_time=>0.073056}
 ~ 

~ Building Javascript: foundation/unittest.js
 ~ Request: /static/sproutcore/en/_cache/foundation/unittest-1214471551.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.191848, :before_filters_time=>5.4e-05, :after_filters_time=>7.1e-05, :dispatch_time=>0.193395}
 ~ 

~ Building Javascript: views/popup_menu.js
 ~ Request: /static/sproutcore/en/_cache/views/popup_menu-1214471552.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.690991, :before_filters_time=>4.9e-05, :after_filters_time=>5.6e-05, :dispatch_time=>0.69218}
 ~ 

~ Building Javascript: mixins/collection_view_delegate.js
 ~ Request: /static/sproutcore/en/_cache/mixins/collection_view_delegate-1214471551.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.203584, :before_filters_time=>4.9e-05, :after_filters_time=>6.6e-05, :dispatch_time=>0.204766}
 ~ 

~ Building Javascript: views/collection/collection.js
 ~ Request: /static/sproutcore/en/_cache/views/collection/collection-1214471552.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.551482, :before_filters_time=>0.00015, :after_filters_time=>8.1e-05, :dispatch_time=>0.553645}
 ~ 

~ Building Javascript: globals/panels.js
 ~ Request: /static/sproutcore/en/_cache/globals/panels-1214471551.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.072854, :before_filters_time=>5.2e-05, :after_filters_time=>6.8e-05, :dispatch_time=>0.074484}
 ~ 

~ Building Javascript: mixins/scrollable.js
 ~ Request: /static/sproutcore/en/_cache/mixins/scrollable-1214471551.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.149563, :before_filters_time=>4.8e-05, :after_filters_time=>6.3e-05, :dispatch_time=>0.150755}
 ~ 

~ Building Javascript: views/image.js
 ~ Request: /static/sproutcore/en/_cache/views/image-1214471552.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.205168, :before_filters_time=>0.000125, :after_filters_time=>6.7e-05, :dispatch_time=>0.207208}
 ~ 

~ Building Javascript: views/collection/image_cell.js
 ~ Request: /static/sproutcore/en/_cache/views/collection/image_cell-1214471552.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.083784, :before_filters_time=>7.1e-05, :after_filters_time=>6.7e-05, :dispatch_time=>0.084982}
 ~ 

~ Building Javascript: foundation/server.js
 ~ Request: /static/sproutcore/en/_cache/foundation/server-1214471551.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.188758, :before_filters_time=>5.0e-05, :after_filters_time=>6.7e-05, :dispatch_time=>0.189955}
 ~ 

~ Building Javascript: foundation/application.js
 ~ Request: /static/sproutcore/en/_cache/foundation/application-1214471551.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.074754, :before_filters_time=>4.9e-05, :after_filters_time=>7.5e-05, :dispatch_time=>0.076056}
 ~ 

~ Building Javascript: views/button/checkbox.js
 ~ Request: /static/sproutcore/en/_cache/views/button/checkbox-1214471552.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.192361, :before_filters_time=>5.1e-05, :after_filters_time=>6.6e-05, :dispatch_time=>0.193633}
 ~ 

~ Building Javascript: controllers/array.js
 ~ Request: /static/sproutcore/en/_cache/controllers/array-1214471551.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.193467, :before_filters_time=>5.1e-05, :after_filters_time=>6.7e-05, :dispatch_time=>0.194693}
 ~ 

~ Building Javascript: models/store.js
 ~ Request: /static/sproutcore/en/_cache/models/store-1214471551.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.399527, :before_filters_time=>5.2e-05, :after_filters_time=>6.6e-05, :dispatch_time=>0.400901}
 ~ 

~ Building Javascript: views/field/textarea_field.js
 ~ Request: /static/sproutcore/en/_cache/views/field/textarea_field-1214471552.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.105216, :before_filters_time=>5.2e-05, :after_filters_time=>6.3e-05, :dispatch_time=>0.106613}
 ~ 

~ Building Javascript: foundation/routes.js
 ~ Request: /static/sproutcore/en/_cache/foundation/routes-1214471551.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.281777, :before_filters_time=>5.1e-05, :after_filters_time=>5.7e-05, :dispatch_time=>0.283029}
 ~ 

~ Building Javascript: models/record.js
 ~ Request: /static/sproutcore/en/_cache/models/record-1214471551.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.201565, :before_filters_time=>5.0e-05, :after_filters_time=>6.7e-05, :dispatch_time=>0.202754}
 ~ 

~ Building Javascript: models/collection.js
 ~ Request: /static/sproutcore/en/_cache/models/collection-1214471551.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.210999, :before_filters_time=>5.0e-05, :after_filters_time=>6.5e-05, :dispatch_time=>0.212207}
 ~ 

~ Building Javascript: views/button/disclosure.js
 ~ Request: /static/sproutcore/en/_cache/views/button/disclosure-1214471552.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.138113, :before_filters_time=>5.2e-05, :after_filters_time=>6.7e-05, :dispatch_time=>0.139362}
 ~ 

~ Building Javascript: views/source_list_group.js
 ~ Request: /static/sproutcore/en/_cache/views/source_list_group-1214471552.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.071976, :before_filters_time=>4.9e-05, :after_filters_time=>6.5e-05, :dispatch_time=>0.073224}
 ~ 

~ Building Javascript: views/collection/source_list.js
 ~ Request: /static/sproutcore/en/_cache/views/collection/source_list-1214471552.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.082415, :before_filters_time=>5.1e-05, :after_filters_time=>6.7e-05, :dispatch_time=>0.083619}
 ~ 

~ Building Javascript: views/progress.js
 ~ Request: /static/sproutcore/en/_cache/views/progress-1214471552.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.151789, :before_filters_time=>5.1e-05, :after_filters_time=>8.2e-05, :dispatch_time=>0.153014}
 ~ 

~ Building Javascript: views/form.js
 ~ Request: /static/sproutcore/en/_cache/views/form-1214471552.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.553776, :before_filters_time=>5.2e-05, :after_filters_time=>6.1e-05, :dispatch_time=>0.555092}
 ~ 

~ Building Javascript: views/field/checkbox_field.js
 ~ Request: /static/sproutcore/en/_cache/views/field/checkbox_field-1214471552.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.075535, :before_filters_time=>5.1e-05, :after_filters_time=>6.9e-05, :dispatch_time=>0.077089}
 ~ 

~ Building Javascript: validators/validator.js
 ~ Request: /static/sproutcore/en/_cache/validators/validator-1214471552.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.171928, :before_filters_time=>5.3e-05, :after_filters_time=>5.6e-05, :dispatch_time=>0.282249}
 ~ 

~ Building Javascript: validators/password.js
 ~ Request: /static/sproutcore/en/_cache/validators/password-1214471552.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.070481, :before_filters_time=>4.8e-05, :after_filters_time=>6.6e-05, :dispatch_time=>0.07172}
 ~ 

~ Building Javascript: views/segmented.js
 ~ Request: /static/sproutcore/en/_cache/views/segmented-1214471552.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.187281, :before_filters_time=>5.2e-05, :after_filters_time=>6.6e-05, :dispatch_time=>0.188768}
 ~ 

~ Building Javascript: foundation/mock.js
 ~ Request: /static/sproutcore/en/_cache/foundation/mock-1214471551.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.158222, :before_filters_time=>4.8e-05, :after_filters_time=>7.2e-05, :dispatch_time=>0.159423}
 ~ 

~ Building Javascript: views/collection/grid.js
 ~ Request: /static/sproutcore/en/_cache/views/collection/grid-1214471552.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.184285, :before_filters_time=>7.2e-05, :after_filters_time=>6.9e-05, :dispatch_time=>0.185496}
 ~ 

~ Building Javascript: views/collection/table.js
 ~ Request: /static/sproutcore/en/_cache/views/collection/table-1214471552.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.34499, :before_filters_time=>4.9e-05, :after_filters_time=>7.1e-05, :dispatch_time=>0.346189}
 ~ 

~ Building Javascript: views/tab.js
 ~ Request: /static/sproutcore/en/_cache/views/tab-1214471552.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.118439, :before_filters_time=>5.2e-05, :after_filters_time=>6.7e-05, :dispatch_time=>0.119879}
 ~ 

~ Building Javascript: validators/credit_card.js
 ~ Request: /static/sproutcore/en/_cache/validators/credit_card-1214471552.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.08763, :before_filters_time=>5.0e-05, :after_filters_time=>6.9e-05, :dispatch_time=>0.088835}
 ~ 

~ Building Javascript: foundation/error.js
 ~ Request: /static/sproutcore/en/_cache/foundation/error-1214471551.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.470173, :before_filters_time=>5.0e-05, :after_filters_time=>7.0e-05, :dispatch_time=>0.471391}
 ~ 

~ Building Javascript: panes/manager.js
 ~ Request: /static/sproutcore/en/_cache/panes/manager-1214471551.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.449108, :before_filters_time=>5.3e-05, :after_filters_time=>6.6e-05, :dispatch_time=>0.450395}
 ~ 

~ Building Javascript: views/scroll.js
 ~ Request: /static/sproutcore/en/_cache/views/scroll-1214471552.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.071064, :before_filters_time=>0.000182, :after_filters_time=>6.6e-05, :dispatch_time=>0.072308}
 ~ 

~ Building Javascript: validators/number.js
 ~ Request: /static/sproutcore/en/_cache/validators/number-1214471552.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.171758, :before_filters_time=>4.9e-05, :after_filters_time=>6.8e-05, :dispatch_time=>0.172944}
 ~ 

~ Building Javascript: foundation/set.js
 ~ Request: /static/sproutcore/en/_cache/foundation/set-1214471551.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.15831, :before_filters_time=>5.0e-05, :after_filters_time=>6.7e-05, :dispatch_time=>0.159491}
 ~ 

~ Building Javascript: drag/drag_source.js
 ~ Request: /static/sproutcore/en/_cache/drag/drag_source-1214471551.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.170031, :before_filters_time=>5.0e-05, :after_filters_time=>6.4e-05, :dispatch_time=>0.171282}
 ~ 

~ Building Javascript: views/menu_item.js
 ~ Request: /static/sproutcore/en/_cache/views/menu_item-1214471552.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.212138, :before_filters_time=>5.0e-05, :after_filters_time=>6.6e-05, :dispatch_time=>0.213559}
 ~ 

~ Building Javascript: foundation/undo_manager.js
 ~ Request: /static/sproutcore/en/_cache/foundation/undo_manager-1214471551.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.116403, :before_filters_time=>4.8e-05, :after_filters_time=>6.2e-05, :dispatch_time=>0.117602}
 ~ 

~ Building Javascript: views/toolbar.js
 ~ Request: /static/sproutcore/en/_cache/views/toolbar-1214471552.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.071442, :before_filters_time=>5.9e-05, :after_filters_time=>6.5e-05, :dispatch_time=>0.074003}
 ~ 

~ Building Javascript: views/split.js
 ~ Request: /static/sproutcore/en/_cache/views/split-1214471552.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.173982, :before_filters_time=>4.9e-05, :after_filters_time=>6.8e-05, :dispatch_time=>0.175177}
 ~ 

~ Building Javascript: views/split_divider.js
 ~ Request: /static/sproutcore/en/_cache/views/split_divider-1214471552.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.206664, :before_filters_time=>4.9e-05, :after_filters_time=>6.8e-05, :dispatch_time=>0.207859}
 ~ 

~ Building Javascript: views/slider.js
 ~ Request: /static/sproutcore/en/_cache/views/slider-1214471552.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.086051, :before_filters_time=>0.000314, :after_filters_time=>6.7e-05, :dispatch_time=>0.08734}
 ~ 

~ Building Javascript: panes/picker.js
 ~ Request: /static/sproutcore/en/_cache/panes/picker-1214471551.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.579551, :before_filters_time=>4.9e-05, :after_filters_time=>6.0e-05, :dispatch_time=>0.58081}
 ~ 

~ Building Javascript: foundation/json.js
 ~ Request: /static/sproutcore/en/_cache/foundation/json-1214471551.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.092513, :before_filters_time=>5.4e-05, :after_filters_time=>7.0e-05, :dispatch_time=>0.093784}
 ~ 

~ Building Javascript: globals/popups.js
 ~ Request: /static/sproutcore/en/_cache/globals/popups-1214471551.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.08357, :before_filters_time=>5.0e-05, :after_filters_time=>6.7e-05, :dispatch_time=>0.084804}
 ~ 

~ Building Javascript: views/field/select_field.js
 ~ Request: /static/sproutcore/en/_cache/views/field/select_field-1214471552.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.077815, :before_filters_time=>4.7e-05, :after_filters_time=>6.6e-05, :dispatch_time=>0.079079}
 ~ 

~ Building Javascript: drag/drop_target.js
 ~ Request: /static/sproutcore/en/_cache/drag/drop_target-1214471551.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.197913, :before_filters_time=>0.000113, :after_filters_time=>0.007676, :dispatch_time=>0.199274}
 ~ 

~ Building Javascript: panes/dialog.js
 ~ Request: /static/sproutcore/en/_cache/panes/dialog-1214471551.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.256701, :before_filters_time=>4.8e-05, :after_filters_time=>6.8e-05, :dispatch_time=>0.258122}
 ~ 

~ Building Javascript: foundation/utils.js
 ~ Request: /static/sproutcore/en/_cache/foundation/utils-1214471551.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.088234, :before_filters_time=>4.8e-05, :after_filters_time=>6.8e-05, :dispatch_time=>0.089404}
 ~ 

~ Building Javascript: views/collection/list.js
 ~ Request: /static/sproutcore/en/_cache/views/collection/list-1214471552.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.084482, :before_filters_time=>5.0e-05, :after_filters_time=>6.4e-05, :dispatch_time=>0.085878}
 ~ 

~ Building Javascript: views/list_item.js
 ~ Request: /static/sproutcore/en/_cache/views/list_item-1214471552.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.180665, :before_filters_time=>7.1e-05, :after_filters_time=>6.9e-05, :dispatch_time=>0.198984}
 ~ 

~ Building Javascript: foundation/animator.js
 ~ Request: /static/sproutcore/en/_cache/foundation/animator-1214471551.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.246405, :before_filters_time=>4.9e-05, :after_filters_time=>7.3e-05, :dispatch_time=>0.247613}
 ~ 

~ Building Javascript: validators/date.js
 ~ Request: /static/sproutcore/en/_cache/validators/date-1214471552.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.087579, :before_filters_time=>5.3e-05, :after_filters_time=>6.4e-05, :dispatch_time=>0.088964}
 ~ 

~ Building Javascript: validators/email.js
 ~ Request: /static/sproutcore/en/_cache/validators/email-1214471552.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.082585, :before_filters_time=>5.2e-05, :after_filters_time=>6.3e-05, :dispatch_time=>0.08421}
 ~ 

~ Building Javascript: globals/window.js
 ~ Request: /static/sproutcore/en/_cache/globals/window-1214471551.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.0939, :before_filters_time=>5.0e-05, :after_filters_time=>6.8e-05, :dispatch_time=>0.095107}
 ~ 

~ Building Javascript: views/filter_button.js
 ~ Request: /static/sproutcore/en/_cache/views/filter_button-1214471552.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.072505, :before_filters_time=>4.9e-05, :after_filters_time=>6.7e-05, :dispatch_time=>0.07372}
 ~ 

~ Building Javascript: validators/not_empty.js
 ~ Request: /static/sproutcore/en/_cache/validators/not_empty-1214471552.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.066624, :before_filters_time=>4.9e-05, :after_filters_time=>6.7e-05, :dispatch_time=>0.067906}
 ~ 

~ Building Javascript: views/spinner.js
 ~ Request: /static/sproutcore/en/_cache/views/spinner-1214471552.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.078186, :before_filters_time=>4.9e-05, :after_filters_time=>6.4e-05, :dispatch_time=>0.079349}
 ~ 

~ Building Javascript: foundation/run_loop.js
 ~ Request: /static/sproutcore/en/_cache/foundation/run_loop-1214471551.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.080723, :before_filters_time=>5.4e-05, :after_filters_time=>6.9e-05, :dispatch_time=>0.081929}
 ~ 

~ Building Javascript: panes/menu.js
 ~ Request: /static/sproutcore/en/_cache/panes/menu-1214471551.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.068452, :before_filters_time=>5.1e-05, :after_filters_time=>6.6e-05, :dispatch_time=>0.06965}
 ~ 

~ Building Javascript: views/button/radio.js
 ~ Request: /static/sproutcore/en/_cache/views/button/radio-1214471552.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.10468, :before_filters_time=>5.1e-05, :after_filters_time=>6.5e-05, :dispatch_time=>0.105925}
 ~ 

~ Building Javascript: views/field/radio_field.js
 ~ Request: /static/sproutcore/en/_cache/views/field/radio_field-1214471552.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.104406, :before_filters_time=>5.0e-05, :after_filters_time=>7.2e-05, :dispatch_time=>0.105615}
 ~ 

~ Building Javascript: foundation/timer.js
 ~ Request: /static/sproutcore/en/_cache/foundation/timer-1214471551.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.088931, :before_filters_time=>5.2e-05, :after_filters_time=>6.7e-05, :dispatch_time=>0.090208}
 ~ 

~ Building Javascript: strings.js
 ~ Request: /static/hello_world/en/_cache/strings-1214531748.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.023229, :before_filters_time=>5.2e-05, :after_filters_time=>6.7e-05, :dispatch_time=>0.024533}
 ~ 

~ Building Javascript: core.js
 ~ Request: /static/hello_world/en/_cache/core-1214531748.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.017145, :before_filters_time=>5.1e-05, :after_filters_time=>6.7e-05, :dispatch_time=>0.018335}
 ~ 

~ Building Javascript: main.js
 ~ Request: /static/hello_world/en/_cache/main-1214531748.js
 ~ Routed to: {:controller=>"sprout_core_bundle_controller_0", :action=>"main"}
 ~ Params: {"action"=>"main", "controller"=>"sprout_core_bundle_controller_0"}
 ~ {:action_time=>0.093128, :before_filters_time=>4.7e-05, :after_filters_time=>7.0e-05, :dispatch_time=>0.094299}
 ~


おわりに

以上です。この後、ドキュメントは Go to Hello World Tutorial 2: Your First Views へと続きます。気が向いたら続けてみよーかと思ってますが、

次にSproutCoreを使用するに適応したアプリケーションに関して尋ねた。

デスクトップと同様のレベルのソフトウェアを作りたければ絶対にSproutCoreを勧めます。
自分のページでツールバー、メニューやソースリスト等を追加し始めるとたくさんの微妙なステートを保持しなければいけないことに気づくと思います。SproutCoreはこれを簡単にかつ正確にさせてくれます。

もしあなたがウェブページを持っていてAjaxやアニメーションで装飾したければSproutCoreはちょっと行き過ぎだろう。私だったらScriptaculousの様にもっとシンプルなフレームワークを使うだろう。

JavaScriptをMVCに適応- Sprout Core

らしいので、優先度は低めかなぁ。