Hatena::Groupprogram

ひとり開発日記。 このページをアンテナに追加 RSSフィード

2012/12/10 (Mon)

JRubyでRedmineをWAR化する。

| JRubyでRedmineをWAR化する。 - ひとり開発日記。 を含むブックマーク はてなブックマーク - JRubyでRedmineをWAR化する。 - ひとり開発日記。

を参考に、WARを作ってみます

  1. warblerインストール
  2. warble.rbを作成、編集
  3. warbleでWARを作成
  4. redmine.warを、さくらVPSTomcat上に転送、Tomcat再起動
  5. 表示された!
  6. ユーザー作成、チケット作成をしようとしたら、例外発生!
    • な、なじぇ…。

Tomcatのログを見ても、"org.jruby.rack.RackInitializationException: wrong number of arguments (1 for 2)"ってなんぞこれ…。

結局、Stack Overflowこれを参照に、JRuby Rackのバージョンを落とすことに。

c:\workspace\redmine>jgem uninstall jruby-rack -v 1.1.12

You have requested to uninstall the gem:
        jruby-rack-1.1.12
warbler-1.3.6 depends on [jruby-rack (>= 1.0.0)]
If you remove this gems, one or more dependencies will not be met.
Continue with Uninstall? [Yn]  y
Successfully uninstalled jruby-rack-1.1.12

c:\workspace\redmine>jgem install jruby-rack -v 1.0.10
Successfully installed jruby-rack-1.0.10
1 gem installed

で、次は"Encoding::CompatibilityError (incompatible character encodings: ASCII-8BIT and UTF-8)"とか言うのがわらわら出てくる…。

ちょっとググったら、これRuby 1.9とRails3の有名な不具合*1なんですね…。 JRubyじゃmysql2とか意味ないし*2、もうここはRuby 1.8に変更することに。

warble.rbを以下のように変更します。

  # Set JRuby to run in 1.9 mode.
  config.webxml.jruby.compat.version = "1.8"

JRuby-Jarsのバージョンが1.7.1だと、Tomcat上で動くJRubyのバージョンが1.7.1になるので、それを作業環境と同じ1.6.8にします。

c:\workspace\redmine>jgem uninstall jruby-jars -v 1.7.1

You have requested to uninstall the gem:
        jruby-jars-1.7.1
warbler-1.3.6 depends on [jruby-jars (>= 1.4.0)]
If you remove this gems, one or more dependencies will not be met.
Continue with Uninstall? [Yn]  y
Successfully uninstalled jruby-jars-1.7.1

c:\workspace\redmine>jgem install jruby-jars -v 1.6.8
Fetching: jruby-jars-1.6.8.gem (100%)
Successfully installed jruby-jars-1.6.8
1 gem installed

これでもう一度、warbleコマンドでWARを作って、Tomcat上に転送したら、よかった、動いています。 チケット作っても例外発生しませんよ…。*3

*1http://www.openscript.org/wiki/index.php?Rails3#s93b1f3b

*2JRubyは、JDBC経由でDBに接続する

*3:何か問題あったとき、問題がRubyなのか、Railsなのか、Redmineなのか、JRubyなのか、Javaなのか、Tomcatなのか、MySQLなのか、それを回避するには、どこをどうすればいいのか、の切り分けが非常に困難、と言うのは、マジ困り物…。

トラックバック - http://program.g.hatena.ne.jp/halflite/20121210