Silverline を試してみました
昨年のRails Conference 2008 でデモが行われた Ruby on Rails のプラグインである Silverline を試してみました。このプラグインは、RoR 上で Silverlight アプリを生成するためのものです。Web上でのデモも確認することができます。この環境を構築するの使用したのは、以下のものになります。
- One Click Ruby Installer 1.8.6-27 RC2
- Ruby on Rails 2.0.2
gem install rails --version 2.0.2 --include-dependencyでインストール - Silverline
- Silverline-Demos
- sqlite3-ruby 1.2.4
- SQLite 3.6.11
Ruby on Rails をgemでインストールした時に問題になったのが、proxy設定です。これには、「--http-proxy https://<サーバのIPアドレス>:<ポート名>」オプションを指定することで対応しました。必要なモジュールのインストールが完了したという前提で、Silverline-demosに含まれるサンプルを動作させた方法を以下に記述します。
新規のRailsアプリケーションを作成する
コマンド「rails new-silverline」を使って新規のrailsアプリケーションを作成します。以下はrailsの環境設定です
config\database.ymlファイル development: adapter: sqlite3 encoding: utf-8 # 追加 database: db/development.sqlite3 timeout: 5000
config\environment.rbファイル Rails::Initializer.run do |config| # :略 : # 以下を追加 config.action_controller.default_charset='UTF-8' end
Silverlineプラグインのインストール
gitを使ってcloneしたsilverlineフォルダを vendor\pluginsフォルダへコピーします。app\controlers\client_controller.rbを準備
silverline-demos\app\controlers\client_controller.rbをコピーします。この理由は、silverlineプラグインがclient_controller.rbをチェックするためです。app\views\layouts\client.html.erbを準備
silverline-demos\app\views\layouts\client.html.erb をコピーします。これが、先程のコントローラーに対するビューになります。
この時点で「ruby script/server」でサーバーを起動して、https://localhost:3000/clientへ アクセスすることで動作を確認することができます。「Show Time」をクリックすることで、時刻を取得した新しいページがレンダリングされると思います。私の場合は、public\silverline.html(demosで提供されるindex.html)とpublic\clientaccesspolicy.xmlを準備しました。
両方ともsilverline-demos\publicにあります。
ここまでで、本当に基本的なSilverlightアプリケーションが動作しました。UIとしては、HTMLでコードとしてはIronRubyというものです。この動きの延長として、Read Evalute Print Loop(略してrepl、Web上のコンソール)のサンプルとして「TryRuby」があります。このTryRuby環境の作り方を以下を記述します。
必要なファイルをsilverline-demosからコピーします。
app\controllers\tryruby_controller.rb
app\helpers\tryruby_helper.rb
app\views\layouts\tryruby.html.erb
app\views\tryruby(_evalute.rb、index.html.erb)
app\public\images(loading2.gif、loading.net.gif)
app\public\javascripts(scrolling.js)
app\public\stylesheets(error.css)index.html.erbの11行目を以下のように修正します
シングルクオーテーションが抜けているためです<a href="javascript:void(0)" mce_href="javascript:void(0)" id="next" onclick="alert('next')">
-
config\route.rb に JSON のマップを追加します map.connect "tryruby/instructions.:format", :controller => 'tryruby', :action => 'instructions' これで https://localhost:3000/tryrubyへアクセスすることで動作を確認
-
することができます。
このTryRubyサンプルは、
起動時にSilverlightからRoRのtryruby\instructionsへリクエストします。そして、返ってきたJSON形式のデータを使って、操作のガイドを表示するようになっています。
silverline-demos自体を動作させるためには、以下の2つの操作が必要になります。
- 「raike db:migrate」コマンドでsqlliteの環境を作成する。
これは、postsというサンプルがDBを使用するためです。 - vender\plugins\silverlineフォルダへ、silverlineプラグインの内容をコピーする。
他にも動作のおかしな所もありますが、基本的な動作を以上の操作で確認することができます。これが、Ruby on Railsに対するプラグインであるsilverlineの動作になります。
silverlineが行っている動作は、2つあります。
- サーバー側で必要なコンテンツを生成すると同時にclient.xapを生成して、コンテンツをブラウザに返す
- クライアント側のlclient.xapに含まれたIronRubyスクリプトを使って、XAMLやJSONへのリクエストをサーバーへ投げること。
これらの動きを行うために、コントローラーやビュー(サーバー側とSilverlight側)を提供しているのがSilverlineとなります。
Comments
- Anonymous
March 22, 2009
PingBack from http://blog.a-foton.ru/index.php/2009/03/23/silverline-%e3%82%92%e8%a9%a6%e3%81%97%e3%81%a6%e3%81%bf%e3%81%be%e3%81%97%e3%81%9f/