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

こんにちは。こんばんは。窓の杜編集部の柳です。

窓の杜 - 【NEWS】.NET Framework上で動作するスクリプト言語“Ruby”「IronRuby」が正式版に

とうとう「IronRuby」安定版が正式公開されましたね。実はスクリプト言語は苦手で…覚えたいなって思うんですけれど、ついつい使い慣れたC#に逃げてしまうんですよね。これを機会に、頑張って覚えてみようかな?

それはともかく。

また、“Ruby”の公式実装の安定版「Ruby」v1.8.6との互換性も高く、Webアプリケーションフレームワーク“Ruby on Rails”を利用することもできるという。

「できるという。」ってなんだか無責任な書き方ですよね。ほんとにできるのかヨ。というわけで、実際に試してみました。

sshot-1224

まず、「VirtualBox」でプレーンなWindows Vista環境を用意。

ついで、.NET 2.0用の「IronRuby」と「SQLite ADO.NET 2.0/3.5 Provider(System.Data.Sqlite)」をインストールします。.NET 2.0用にしたのは、.NET 4がまだ英語版のみの提供になっているのと、.NET 4をインストールする時間がなかったからです(後日改めて挑戦するかも?)。同じく時間がないという理由で、今回はデータベースはSQlite3にします。SQL Server Express なども利用できるようですね。

インストールが完了したら、コマンゴプロンプトを起動して以下のように入力。

sshot-1229

ちゃんとバージョンが出力されたら、セットアップは成功です。

つぎに「RubyGems」で必要なGemをインストールしていきます。コマンドプロンプトで、以下のような呪文を唱えます。

ir –S gem install rake rails sqlite3-ironruby --no-ri --no-rdoc

ri、rdocの生成をスキップして、rake、rails、sqlite3-ironruby という3つのGemをインストールするという意味です(sqlite3-ironrubyなんてあるんですね! 全然しらなかったです)。

 sshot-1231

警告が出ちゃいました…インストールは成功したみたいですけれど、もう一度管理者権限でコマンドプロンプトを起動して、再インストール。

sshot-1232

sshot-1233

今度は何も出ませんでした。今回「IronRuby」はProgram Files以下にインストールしたのですが、権限の問題を回避するためにも「C:\IronRuby\」などへインストールした方がいいかもしれませんね。

さて、管理者権限じゃないコマンドプロンプトに戻ります。

実際に Rails が利用できるか試してみます。ユーザーフォルダに「rails」フォルダを作成し、そこへ移動して rails プロジェクト "sample" を作成します。

C:\Users\Hidetoshi Yanagi\rails>ir -S rails sample
      create
      create  app/controllers
      create  app/helpers
      create  app/models
      create  app/views/layouts
      create  config/environments
      create  config/initializers
      create  config/locales
      create  db
      create  doc
      create  lib
      create  lib/tasks
      create  log
      create  public/images
      create  public/javascripts
      create  public/stylesheets
      create  script/performance
      create  test/fixtures
      create  test/functional
      create  test/integration
      create  test/performance
      create  test/unit
      create  vendor
      create  vendor/plugins
      create  tmp/sessions
      create  tmp/sockets
      create  tmp/cache
      create  tmp/pids
      create  Rakefile
      create  README
      create  app/controllers/application_controller.rb
      create  app/helpers/application_helper.rb
      create  config/database.yml
      create  config/routes.rb
      create  config/locales/en.yml
      create  db/seeds.rb
      create  config/initializers/backtrace_silencers.rb
      create  config/initializers/inflections.rb
      create  config/initializers/mime_types.rb
      create  config/initializers/new_rails_defaults.rb
      create  config/initializers/session_store.rb
      create  config/environment.rb
      create  config/boot.rb
      create  config/environments/production.rb
      create  config/environments/development.rb
      create  config/environments/test.rb
      create  script/about
      create  script/console
      create  script/dbconsole
      create  script/destroy
      create  script/generate
      create  script/runner
      create  script/server
      create  script/plugin
      create  script/performance/benchmarker
      create  script/performance/profiler
      create  test/test_helper.rb
      create  test/performance/browsing_test.rb
      create  public/404.html
      create  public/422.html
      create  public/500.html
      create  public/index.html
      create  public/favicon.ico
      create  public/robots.txt
      create  public/images/rails.png
      create  public/javascripts/prototype.js
      create  public/javascripts/effects.js
      create  public/javascripts/dragdrop.js
      create  public/javascripts/controls.js
      create  public/javascripts/application.js
      create  doc/README_FOR_APP
      create  log/server.log
      create  log/production.log
      create  log/development.log
      create  log/test.log

たくさんファイルができました。「cd sample」で作成したプロジェクトフォルダに移動しておきます。

sshot-1236

次に、config\environment.rb を編集。以下の一行を挿入します。

config.gem "sqlite3-ironruby", :lib => “sqlite3”

これで準備は完了みたいですね。コマンドプロンプトで、Webrickサーバーを起動させます。

ir script\server

sshot-1238

途中、ファイヤーウォールのブロックは解除しておきましょう。

sshot-1239

http://localhost:3000 へアクセスしてみました。うまく動いているみたいです!

---

【おまけ】

これだけではおもしろくないので、DBも使ったサンプルを作成します。

ir script\generate scaffold post title:string body:text
rake db:migrate
…(省略)…
ir script\server

image

英語は大丈夫でしたが、日本語は文字化けしてしまいました。sqlite3-ironruby が返す文字列のエンコードがUS-ASCIIのようですね。こまったこまった。

あとはよろしく!

参考: http://ironruby.net/Documentation/Real_Ruby_Applications/Rails