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
ん〜、今から原因調査はきついから明日にしよう・・・。
おやすみなさいませ。