よかろうもん!

アプリからインフラまで幅広くこなすいまどきのクラウドエンジニアが記す技術ブログ

Goldspike Hack 〜その壱〜

RailsアプリをJRubyで動かす方法はさまざま。
その一つにGoldspikeプラグインを利用してAPPサーバで動かす方法がある。

今回はそのGoldspikeを使い倒す。

一般的なwar生成方法は

$ jruby -S script/plugin install http://jruby-extras.rubyforge.org/svn/trunk/rails-integration/plugins/goldspike

そして以下のコマンドを実行

$ jruby -S rake war:standalone:create


確かにwarは生成されるが、不必要なファイル(ログファイルや利用していないgem)まで一緒に固められてしまう。

これを回避するために、warを生成設定ファイル(vendor/plugins/goldspike/lib/war_config.rb)をいじる。

initializeメソッドで初期値を設定しているので、default build propertiesの最後あたりに以下のような設定を追加すればOK。

# custom
# 不要ファイル
@excludes << 'log/development.log'
@excludes << 'tmp/session*'
# warファイル名
@war_file = "redmine.war"

同じような方法でdefault java librariesやdefault gemsも必要なものにする。

これだけだと、『ふ〜ん』という感じ。

私の中で『へぇ〜』と思ったのは、以下の設定項目があったこと。

# compile ruby files? currently only preparses files, but has problems with paths
attr_accessor :compile_ruby

デフォルトはfalseになっているのだが、この値をtrueにすることでコンパイルしてバイトコードに変換してくれるとのこと。

意気揚々と @compile_ruby = true と設定してwarを生成したがエラー発生。

Exception in thread "main" java.lang.NoClassDefFoundError: org/jruby/webapp/ASTSerializerMain
rake aborted!
Error: failed to preparse files in /home/user/projects/redmine/config/../WEB-INF/gems/gems/rails-1.2.3/lib, returned with error code 256

ん〜、今から原因調査はきついから明日にしよう・・・。
おやすみなさいませ。