Silverline を試してみました


昨年のRails Conference 2008 でデモが行われた Ruby on Rails のプラグインである Silverline を試してみました。このプラグインは、RoR 上で Silverlight アプリを生成するためのものです。Web上でのデモも確認することができます。この環境を構築するの使用したのは、以下のものになります。



  1. One Click Ruby Installer  1.8.6-27 RC2
  2. Ruby on Rails 2.0.2
    gem install rails --version 2.0.2 --include-dependencyでインストール
  3. Silverline
  4. Silverline-Demos
  5. sqlite3-ruby 1.2.4
  6. SQLite 3.6.11


Ruby on Rails をgemでインストールした時に問題になったのが、proxy設定です。これには、「--http-proxy http://<サーバのIPアドレス>:<ポート名>」オプションを指定することで対応しました。必要なモジュールのインストールが完了したという前提で、Silverline-demosに含まれるサンプルを動作させた方法を以下に記述します。



  1. 新規のRailsアプリケーションを作成する
    コマンド「rails new-silverline」を使って新規のrailsアプリケーションを作成します。
  2. 以下は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



  3. Silverlineプラグインのインストール
    gitを使ってcloneしたsilverlineフォルダを vendor\pluginsフォルダへコピーします。
  4. app\controlers\client_controller.rbを準備
    silverline-demos\app\controlers\client_controller.rbをコピーします。この理由は、silverlineプラグインがclient_controller.rbをチェックするためです。
  5. app\views\layouts\client.html.erbを準備
    silverline-demos\app\views\layouts\client.html.erb をコピーします。これが、先程のコントローラーに対するビューになります。
    この時点で「ruby script/server」でサーバーを起動して、http://localhost:3000/clientへ アクセスすることで動作を確認することができます。「Show Time」をクリックすることで、時刻を取得した新しいページがレンダリングされると思います。
  6. 私の場合は、public\silverline.html(demosで提供されるindex.html)とpublic\clientaccesspolicy.xmlを準備しました。
    両方ともsilverline-demos\publicにあります。

ここまでで、本当に基本的なSilverlightアプリケーションが動作しました。UIとしては、HTMLでコードとしてはIronRubyというものです。この動きの延長として、Read Evalute Print Loop(略してrepl、Web上のコンソール)のサンプルとして「TryRuby」があります。このTryRuby環境の作り方を以下を記述します。



  1. 必要なファイルを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)
  2. index.html.erbの11行目を以下のように修正します
    シングルクオーテーションが抜けているためです
    <a href="javascript:void(0)" mce_href="javascript:void(0)" id="next" onclick="alert('next')">

  3. config\route.rb に JSON のマップを追加します
    map.connect "tryruby/instructions.:format",
    :controller => 'tryruby', :action => 'instructions'

    これで http://localhost:3000/tryrubyへアクセスすることで動作を確認

  4. することができます。
このTryRubyサンプルは、

起動時にSilverlightからRoRのtryruby\instructionsへリクエストします。そして、返ってきたJSON形式のデータを使って、操作のガイドを表示するようになっています。


silverline-demos自体を動作させるためには、以下の2つの操作が必要になります。



  1. 「raike db:migrate」コマンドでsqlliteの環境を作成する。
    これは、postsというサンプルがDBを使用するためです。

  2. vender\plugins\silverlineフォルダへ、silverlineプラグインの内容をコピーする。

他にも動作のおかしな所もありますが、基本的な動作を以上の操作で確認することができます。これが、Ruby on Railsに対するプラグインであるsilverlineの動作になります。


silverlineが行っている動作は、2つあります。



  1. サーバー側で必要なコンテンツを生成すると同時にclient.xapを生成して、コンテンツをブラウザに返す

  2. クライアント側のlclient.xapに含まれたIronRubyスクリプトを使って、XAMLやJSONへのリクエストをサーバーへ投げること。

これらの動きを行うために、コントローラーやビュー(サーバー側とSilverlight側)を提供しているのがSilverlineとなります。

Skip to main content