jettyでJRuby On Railsを動かすメモ

JRubyのインストール

環境変数設定

C:\>jruby -version
ruby 1.8.5 (2007-06-07 rev 3841) [x86-jruby1.0]

でインストール完了を確認

Railsのインストール

C:\>jruby %JRUBY_HOME%\bin\gem -v
0.9.4

でgemが入っていることを確認(最近のリリースには最初から入ってる模様)
今後毎回 jruby %JRUBY_HOME%\bin\gem ...とフルパス指定するのは面倒くさいと思ってたら、省略する方法があるみたい。

C:\>jruby -h
中略
-S cmd          run the specified command in JRuby's bin dir

だそうで。つまり以下のようにも実行可能ということ。aliasが出来ない(出来なくはないけど面倒くさい)Windows環境だと重宝する。こういう細かい心配りがうれしい。

C:\>jruby -S gem -v
0.9.4

JRubyへのRailsのインストール

C:\>jruby -S gem install rails --include-dependencies

なんか途中で2回ほどException出てた…なんだろう…とりあえずこのまま進めよう…

...
Installing ri documentation for actionpack-1.13.3...
While generating documentation for actionpack-1.13.3
... MESSAGE:   java.lang.ArrayIndexOutOfBoundsException: null
... RDOC args: --ri --op C:/jruby/jruby-1.0/lib/ruby/gems/1.8/doc/actionpack-1.13.3/ri --quiet lib
(continuing with the rest of the installation)
Installing ri documentation for actionmailer-1.3.3...
...
While generating documentation for actionpack-1.13.3
... MESSAGE:   java.lang.ArrayIndexOutOfBoundsException: null
... RDOC args: --op C:/jruby/jruby-1.0/lib/ruby/gems/1.8/doc/actionpack-1.13.3/rdoc --quiet lib
(continuing with the rest of the installation)
Installing RDoc documentation for actionmailer-1.3.3...
...

Railsプロジェクト作成

C:\Docs\Eclipse\Workspaces\demos>jruby -S rails hello-rails

とりあえず起動してみる

C:\Docs\Eclipse\Workspaces\demos>cd hello-rails

C:\Docs\Eclipse\Workspaces\demos\hello-rails>jruby script/server

で、http://localhost:3000/ にアクセスしてみると無事動作した。

goldspike(warファイル作成機能)のインストール

C:\Docs\Eclipse\Workspaces\demos\hello-rails>script/plugin install svn://rubyforge.org/var/svn/jruby-extras/trunk/rails-integration/plugins/goldspike

で、いけるらしいんだけど、今いる場所からだとsvnプロトコルが通らないみたいなので個人サーバで

svn export svn://rubyforge.org/var/svn/jruby-extras/trunk/rails-integration/plugins/goldspike

して落としてからhello-rails\vendor\plugins\goldspikeとしてコピーした。

以下のコマンドでgoldspikeのインストールを確認

C:\Docs\Eclipse\Workspaces\demos\hello-rails>jruby -S rake -T
...
rake tmp:war:clear             # Clears all files used in the creation of a war
rake war:shared:create         # Create a war for use on a Java server where JRuby is available
rake war:standalone:create     # Create a self-contained Java war
rake war:standalone:run        # Run the webapp in Jetty
...

が増えてればOK

warファイル作成

C:\Docs\Eclipse\Workspaces\demos\hello-rails>jruby -S rake war:standalone:create

む…怒られた

...
  Adding Ruby gem actionwebservice version 1.2.3
rake aborted!
The ActiveRecord-JDBC gem is not installed
...

ActiveRecord-JDBCは後で入れればいいと思ってたけど最初からいるらしい。というわけで以下のコマンドでインストール

C:\Docs\Eclipse\Workspaces\demos\hello-rails>jruby -S gem install activerecord-jdbc

再び

C:\Docs\Eclipse\Workspaces\demos\hello-rails>jruby -S rake war:standalone:create

よし、今度は成功した。

maven2に組み込む

  • 前の手順で生成されたwarを解凍する。
  • 前回の記事で、生成したmaven2プロジェクトのsrc\main\webappに解凍した中身をそのままコピペ
  • 以下を実行
C:\Docs\Eclipse\Workspaces\demos\simple>mvn jetty:run

http://localhost:8080/simple/ にアクセスするとrailsのページが表示される。
いい感じだ。よし次はscaffoldをjdbc経由で動かしてみよう。