Welcome to MSDN Blogs Sign in | Join | Help
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となります。

Posted: Monday, March 23, 2009 4:01 PM by shozoa
Filed under: , ,
Leave a Comment

(required) 

(required) 

(optional)

(required) 

  
Enter Code Here: Required

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS

Page view tracker