SproutCore フレームワークをインストールして使ってみる

SproutCorePrototype Javascript ライブラリを使う 100% JavascriptMVC フレームワークで動くクライアント・サイド・アプリケーションを作るための RubiGen 系アンド MerbRuby アプリケーションです。JavascriptRuby で記述されたジェネレータで生成されます。といっても、クライアント・アプリケーションは Javascript と eRuby で記述し、ruby のコードを書くことは eRuby の埋め込み記述を除くとありません。なお、SproutCore で作るのはブラウザで動かすクライアント・サイドのアプリケーションですので、サーバ・サイドでデータを扱うには別途 Merb や RAILS などを使ったバックエンド・アプリケーションがいります。
これを Ubuntu 8.04LTS で使ってみました。動作確認のブラウザには firefox 3rc1 を使いました。今回は、バックエンドなしのクライアント・サイドだけの Hello Worldチュートリアルをなぞってみました。
Hello World Tutorial 1: Getting Started
SproutCoreMacOS X Cocoa フレームワークを意識して作ってあり、チュートリアルのインストール手順部分も MacOS X を意識して記述してあるようです。MacOS X には javarubyrubygems がプレインストールされていますが、Ubuntu 8.04LTS ではそうではないので、まずこれらを入れておかなければいけません。さらに、ドキュメント生成に Rhino を使うため、java ランタイム環境をインストールしておかないといけないようです。

$ sudo apt-get install ruby1.8 ruby1.8-dev libzlib-ruby libyaml-ruby
$ sudo apt-get install sun-java6-jre

debian 系の rubygems パッケージは古い上に挙動が変なので、RubyForge: RubyGems: Project Info からダウンロードした tarball からインストールした方が悩まずにすみます。

$ tar xzf rubygems-1.2.0.tgz
$ cd rubygems-1.2.0
$ sudo ruby setup.rb
$ (cd /usr/bin; ln -s gem1.8 gem)

これで準備ができたので、SproutCoreをインストールします。

$ sudo gem install sproutcore

SproutCore をインストールすると、activesupport、mongel、erubis、rake、json_pure、rack、rspec、hpricot、merb-core 等も入ります。
Tutorial では、firebug を使いますので、firefoxfirebug アドオンもインストールをしておきます。
SproutCore を使ってみるためのディレクトリを作ります。

$ cd work
$ sproutcore hello_world
$ cd hello_world
$ sc-server

firefoxhttp://localhost:4020/hello_world を開くとごそごそとターミナルにメッセージが出力されてから、ブラウザにページが現れました。動いたようです。
チュートリアルの残りは、そのままなぞっていくだけで、問題なく動かすことができました。
なお、SproutCore は開発時は Ruby アプリケーションの sc-server で動的にウェブページを生成させていきますが、クライアント・サイド・アプリケーションとして完成すると静的なコンテンツを吐き出せることができます。
getting started の Step 7: Build your output
sc-server を動かしたディレクトリ(sc-config.rb があるところ)で sc-build を実行すると、tmp/build に静的なコンテンツを作れます。静的なコンテンツは URL の絶対パスが /static で始まっているので、apache で公開するには /var/www にコピーします。

$ sc-build
$ sudo cp -r tmp/build/static /var/www

apache が動いているならば、http://localhost/static/hello_world/ を開くことで、作ったコンテンツが表示されます。