IronRuby で Ruby on Rails を動かしてみました

昨年のRailsカンファレンスに続いて今年のRailsカンファレンスでは、「IronRuby on Rails」というセッションが行われました。このセッションでは、公開されたIronRuby 0.5.0とRuby on Rails 2.3.2を使って実際にRailsをIronRubyで動かしています。少し(大分かも)前から、IronRubyでRailsを動かすためのドキュメントが公開されています。このカンファレンスで何を紹介したかというサマリーが、Jimmyさんのブログで紹介されています。Railsを動かすドキュメントを使って、実際にRailsを動かしてみましたので、その手順を以下に記載していきます。 1.環境構築 IronRuby 0.5.0 Ruby 1.8系 (私は、OneClick Installer 1.8.6-27を使用しました) IronRuby 0.5.0をダウンロードしてC:\IronRuby-0.5.0フォルダへ展開し、OneClick Installerで使ってC:\RubyへRubyをインストールしました。 2.Rails 2.3.2 の導入 RubyGems のアップデート Ruby on Rails 2.3.2をRubyGemsを使ってインストール#コマンドプロンプトで作業 gem update –system gem install rails –v2.3.2 –include-dependencies  (注)RubyGemsを利用するために、Ruby 1.8系が必要になります。 3.環境変数の設定 PATH環境変数へ IronRubyのBinフォルダへのパスを追加します。 GEM_PATH環境変数へRubyGemsのパスを設定します。SET PATH=%PATH%;C:\IronRuby-0.5.0\bin SET GEM_PATH=C:\ruby\lib\ruby\gems\1.8   4.IronRubyの構成ファイルである「ir.exe.config」のLibralyPathsの値にRuby1.8のライブラリパスを設定します。<set language=”Ruby” value=”..\lib\IronRuby; c:\ruby\lib\ruby\site_ruby\1.8\; c:\ruby\lib\ruby\1.8\” option=”LibraryPaths” /> (注)valueの値は読みやすいように改行していますが、実際に設定する場合は改行を含めないで下さい。またir.exe.configは、IronRuby 0.5.0を展開した中のBinサブフォルダに存在します。 4.SQL…

4

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.2gem 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 http://<サーバの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…

1

IronPython 2.0 リリース

ついにIronPython 2.0がリリースされました。それと同期するようにDLRも公開されています。ふむDLRのバージョンは0.9となっていますが、12/10にUpされているのでRC2に同期した0.9から、どの程度更新されたかは不明です。 DLR-0.9をダウンロードしてみると、中にIronRuby、ToyScript、IronPythonも含まれています。IronPython.dllのバージョンを見ると2.0.11121.0なのでIronPython 2.0に含まれているのと同じバージョンになります。異なるのはタイムスタンプだけです。また、DLRに関するドキュメントがWORD文書で5つほど含まれています。DLRをホスティングするには、dlr-spec-hosting.docという文書が有益です。 PS:Silverlight Dynamic Lamguage SDKに含まれているバイナリと同じものが、DLR-0.9に含まれています。今回のソースコードに対応したものは、まだ公開されていないようです。


Silverlight Dynamic Language SDK の使い方4

今回は、 Chiron.exeの/bや/z、/mオプションで作成されるアプリケーション・マニフェストを説明します。例題とするのは、DLR Consoleで使用されているAppManifest.xamlです。<Deployment xmlns=”http://schemas.microsoft.com/client/2007/deployment” xmlns:x=”http://schemas.microsoft.com/winfx/2006/xaml” RuntimeVersion=”2.0.31005.00″ EntryPointAssembly=”Microsoft.Scripting.Silverlight” EntryPointType= “Microsoft.Scripting.Silverlight.DynamicApplication” > <Deployment.Parts> <!– Add additional assemblies here –> <AssemblyPart Source=”Microsoft.Scripting.Silverlight.dll”/> <AssemblyPart Source=”Microsoft.Scripting.Core.dll” /> <AssemblyPart Source=”Microsoft.Scripting.dll” /> <AssemblyPart Source= “Microsoft.Scripting.ExtensionAttribute.dll” /> <AssemblyPart Source=”IronPython.dll” /> <AssemblyPart Source=”IronPython.Modules.dll” /> <AssemblyPart Source=”IronRuby.dll” /> <AssemblyPart Source=”IronRuby.Libraries.dll” /> <AssemblyPart Source=”Microsoft.JScript.Runtime.dll” /> <AssemblyPart Source=”Microsoft.JScript.Compiler.dll” /> </Deployment.Parts> </Deployment> 最初に取り上げるのが、Deployment要素のEntryPointAssembly属性とEntryPointType属性です。ここには、以下のように記述されています。 EntryPointAssembly=”Microsoft.Scripting.Silverlight” EntryPointType=”Microsoft.Scripting.Silverlight.DynamicApplication” 属性名が表しているようにSilverlight2.0対応のランタイムが起動するプログラムが格納されたアセンブリと開始するクラスを指定しています。このDynamicApplicationクラスこそが、SilverlightとDLRを結びつけるものです。このエントリポイントのモデルは、DLRに限った話ではなくC#やVBを使ったSilverlightアプリケーションでも使用されているものです。そして、DynamicApplicationクラスはSystem.Windows.Applicationクラスを継承しています。 Deployment.Parts要素内のAssemblyPart要素にSilverlightランタイムが読み込むアセンブリをSource属性で指定します。ここで指定しているアセンブリを以下に示します。 アセンブリ名…

1

Silverlight Dynamic Language SDK の使い方3

Dynamic Language SDK で提供されるスクリプトのserver.batとは、chiron.exeをラップしただけのものです。このため指定できるオプションを確認するには、「/?」か「/h」オプションを指定します。指定できるオプションを以下に示します。 オプション 説   明 /d:パス 又は /dir、/directory アプリケーション(スクリプトやプログラム)を格納しているフォルダを指定します。デフォルトは「app」になります。 /x:xapファイル 又は /xap、/xapfile xapファイルを作成する場合に「/x:app.xap」のようにxapファイルを指定します。/dで指定したフォルダの中身がxapファイルに格納されます。 /n 又は /nologo バナーの表示を抑制します。 /s 又は /silent コンソール出力を抑制します。 /z:xapファイル 又は /zipdlr DLRアプリケーション向けのxapファイルを生成します。/dで指定したフォルダにAppManifest.xamlが存在しなければ自動的に生成します。/xオプションとの違いは、スクリプトファイルを解析して必要なアセンブリと生成したAppManifest.xamlをxapファイル内に含めることです。 /w 又は /webserver テスト用のWebサーバーを起動します。デフォルトのポートは、2060になります。ポートを指定する場合は、/w:ポート番号と指定します。 /b 又は /browser テスト用のWebサーバーを起動して、ブラウザを起動します。開始時のURLを指定するには、/b:パスオプションを指定します。/dオプションを組み合わせれば、WebサーバーのトップURLの場所を指定することができます。 /m 又は /manifest アプリケーション・マニフェスト(AppManifest.xaml)を生成します。 /? 又は /h、/help ヘルプを表示します。 /r:パス 又は /refpath 参照するアセンブリへのパスを指定します。デフォルトは、Chiron.exeが存在するフォルダを参照します。このオプションは、ヘルプに表示されません。 オプションの使い方は、ヘルプコマンドで確認するか、SDKに含まれるReadme.txtに記述されています。前回に解説したプログラムをテスト実行するだけであれば、「chiron.exe /b /d:アプリケーションフォルダ」を実行することでブラウザで実行することができます。 配布用にXAPファイルを作成するには、以下のようにコマンドを入力します。chiron.exe /d:アプリケーション・フォルダ /z:app.xap これでXAPファイルが出来ますので、index.htmlとjavascriptフォルダ、stylesheetsフォルダ、作成したXAPファイルをWebサーバーへ配置すれば本番環境への移行が完了します。 chiron.exeには/xオプションでXAPファイルを作成できますが、このオプションは動的言語に特化したものではありません。どういう場合に使うかというと、既存のXAPファイルを展開して、中身のリソース(画像など)を入れ替えた場合などの再XAP化に使用することができます。つまり、リソース入れ替えでVisual StudioのリビルドなどをしなくてもXAPファイルを作成できるのです。具体的には、以下のようなコマンドを入力します。chiron.exe…

2

Silverlight Dynamic Language SDK の使い方2

今回は、SDKで提供されるテンプレート集の構造を説明します。最初にindex.htmlのobjectタグを解説します。<object data=”data:application/x-silverlight,” type=”application/x-silverlight-2″ width=”100%” height=”100%”> <!– XAPファイルを指定します。指定したファイル名が 開発中に使用するフォルダ名になります。 –> <param name=”source” value=”python.xap”/> <!– “initParams”はkey=valueの形式で、カンマ区切りで複数の パラメータを指定できます。 –> <param name=”initParams” value=”debug=true, reportErrors=errorLocation” /> <!– Silverlightランタイムのエラーを処理する javascript関数を指定します。この関数は javascripts/error.js で定義されています。 –> <param name=”onerror” value=”onSilverlightError” /> <!– 他のパラメータは、Silverlightのプロパティです。 –> <param name=”background” value=”white” /> <param name=”windowless” value=”true” /&lg; <!– Silverlight ランタイムのインストール用のリンクです。 –> <a href=”http://go.microsoft.com/fwlink/?LinkID=124807″      style=”text-decoration: none;”> <img src=”http://go.microsoft.com/fwlink/?LinkId=108181″ alt=”Get Microsoft…

1

Silverlight Dynamic Language SDK の使い方1

既にご案内したようにSilverlight 2.0に対応したDynamic Language SDKがリリースされています。Codeplexのサイトには、以下の5種類が公開されています。 sdlsdk-0.4.0(Everything):バイナリ、サンプル、ソースが含まれています。 sdlsdk-0.4.0-bin:バイナリのみ。 sdlsdk-0.4.0-samples:サンプルのみ。 sdlsdk-0.4.0-src:ソースコードのみ。 sdlsdk-0.4.0-symblos:デバッグなどで使用するシンボル。 開発に利用するには、sdlsdk-0.4.0(Everything)がお勧めでしょう。このパッケージには以下のようなフォルダ構造が含まれています。 bin chiron.exeや使用するdllが含まれます samples サンプルプログラム script 起動用のスクリプトと開発用のテンプレート集(templatesフォルダ) src ソースコード(Managed JS除き) ルート直下のファイル Readmeとライセンス テンプレート集を試すには、scriptフォルダでコマンドプロンプトを開いて、「server /b」を実行するとブラウザが開きます。templates/言語フォルダ/index.htmをブラウザで開くことで、テンプレート集で提供されているプログラムを動かすことができます。  テンプレート集で提供されている構造は以下のようなものです。 javascriptフォルダ error.js:Silverlightランタイムのエラー時に指定するonSilverlightError関数が定義されています。 言語フォルダ app.言語拡張子、app.xaml:言語のコードサンプルと単純なXAML(GridとTextBlockだけ)が定義されています。 stylesheetsフォルダ screen.css、error.css:error.cssはSilverlightランタイムのエラーなどを表示するスタイルシートで、フォントがCourier Newになっています。 index.html Silverlightを起動する指定がobjectタグで記述されています。 このテンプレートを使ってカスタマイズして、動的言語を使ったSilverlight2 アプリを開発できるようになっています。 このテンプレートを使って開発するには、scriptフォルダにある「sl.bat」ファイルを使用するのが簡単です。sl.batの使い方は、scriptフォルダでコマンドプロンプトを開いて以下のようにコマンドを入力します。  sl  言語  アプリケーションフォルダ 言語には、「python」「ruby」「jscript」を指することができます(要は、templatesフォルダ内にある言語フォルダの名前です)。アプリケーションフォルダとは、開発するアプリケーションを格納するフォルダのことです。これで上記のコマンドを実行すると、templatesフォルダで提供されているテンプレート集を指定したアプリケーションフォルダにコピーしてくれます(xcopyです)。これで、必要なコードを記述していけばよいということになります。 提供されているサンプルを試す場合は、scriptフォルダでコマンドプロンプトを開いて以下のようにserver.batにオプションを付けて実行します。 server /d:..\samples /b /dオプションで、開始するフォルダを指定しています。/bオプションは、ブラウザを開く指定です。後は、ブラウザを使って提供されているサンプル(jscript、python、ruby)のフォルダをナビゲートしてindex.htmlを開けば、サンプルプログラムが動作します。 次回は、実際の開発時の注意点などを含めてまとめていきます。 #この時点で試されるかたは、スクリプトファイルのエンコードをunicodeにするようにしてください。日本語を扱うには、エンコードがunicodeになっている必要があるからです。

1

Silverlight 2.0RTM 用のDynamic Language SDKが公開されました

 Silverlight 2.0 RTM対応のDynamic Language SDKが、もうまもなく公開されるようです。JimmyさんのBlogで、リリースの案内が掲載されています。日本時間では、明日でしょうか。codeplexのサイトで公開されますので、今日・明日にでもUpされるのでしょう。と書きながらチェックしたらUpされました。バージョンは、10月初めに公開された0.4.0のままです。


Dynamic Language SDK 0.4.0 が公開されています

Silverlight2.0 RC0に対応したDynamic Language SDK 0.4.0が公開されています。お知らせまで。追伸:まだ、DLRの変更点とかまで調べきれていません。


DLR ベータ5 について

IronPython 2.0ベータ5がリリースされてから、DLRにどのような変更が行われているかを調べてみました。一番、大きな変更はネームスペースの変更なのですが、ベータ4に対して以下のようになっています。 System.Scripting-> Microsoft.Scripting Systemというネームスペースが廃止されて、元のMicrosoftというネームスペースに戻っています。それからScriptRuntimeクラスからCreateメソッドが廃止されて、コンストラクタがScriptRuntimeSetupクラスの引数を取るようになっています。この関係でWell Known Languageを指定するScriptRuntimeSetupクラスのコンストラクタからbool引数が廃止されています。この代わりにReadConfigurationメソッドが追加されています。この変更に伴ってScriptRuntimeクラスにもCreateFromConfigurationメソッドが追加されています。この追加されたメソッドを使用するには、app.configに以下の記述を行います。<configuration> <configSections> <section name=”microsoft.scripting” type=”Microsoft.Scripting.Hosting.Configuration.Section, Microsoft.Scripting, Version=1.0.0.5000, Culture=neutral, PublicKeyToken=null” requirePermission=”false” /> </configSections> <microsoft.scripting> <languages> <language names=”IronPython;Python;py” extensions=”.py” displayName=”IronPython 2.0 Beta” type=”IronPython.Runtime.PythonContext, IronPython, Version=2.0.0.5000, Culture=neutral, PublicKeyToken=null” /> </languages> <options/> </microsoft.scripting> </configuration> languageタグに仕様使用する言語を記述しておくことで、ReadConfigurationやCreateFromConfigurationメソッドでScriptRuntimeSetupクラスをWell Known Languageで初期化することができます。IronRuby svn 148のソースツリーは、既にこの対応が行われていて、Python、Ruby、JScript、VB、ToyScriptのが記述されています(VBのリリース状況がどうかは不明です)。 それからObjectOperartions.GetMemberNamesメソッドは正常に動作するようにバグ対応が行われていました。また、Expressions.ExpressionクラスからCodeContextメソッドが削除され、Microsoft.Scripting.Ast.UtilsクラスにCodeContextメソッドが追加されています。細かな変更は他にもありますが、ホスティングする上では上記の内容程度で対応することができます。TechEdの独自言語サンプルなどのベータ5への移植は、それほど手間がかかりませんので、試される方は試してみてください。

2