2012-01-16 7 views
1

私は戦闘としてtomcatでホストするシンプルなSinatraアプリを持っています。私はそれをwarbleしてtomcatで動かすとすべてうまく動作します。私は私のさえずり設定jRuby 1.9を作成するWarblerでSinatraアプリを起動できない

config.webxml.jruby.compat.version =「1.9」

でRuby 1.9のフラグを設定した場合、その後の戦争は実行されませんし、私は、Tomcatのログ

にこのエラーが出ます
INFO: An exception happened during JRuby-Rack startup 
no such file to load -- mysinatraapp 
--- System 
jruby 1.6.5.1 (ruby-1.9.2-p136) (2011-12-27 1bf37c2) (Java HotSpot(TM) 64-Bit Server VM 1.6.0_29) [darwin-x86_64-java] 
Time: 2012-01-16 10:06:32 -0600 
Server: Apache Tomcat/7.0.23 
jruby.home: file:/apache-tomcat-7.0.23/webapps/ROOT/WEB-INF/lib/jruby-stdlib-1.6.5.1.jar!/META-INF/jruby.home 

--- Context Init Parameters: 
jruby.compat.version = 1.9 
jruby.max.runtimes = 1 
jruby.min.runtimes = 1 
public.root =/
rack.env = production 

--- Backtrace 
LoadError: no such file to load -- mysinatraapp 
     require at org/jruby/RubyKernel.java:1047 
     require at file:/apache-tomcat-7.0.23/webapps/ROOT/WEB-INF/lib/jruby-stdlib-1.6.5.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36 
     (root) at /apache-tomcat-7.0.23/webapps/ROOT/WEB-INF/config.ru:2 
    instance_eval at org/jruby/RubyBasicObject.java:1720 
    initialize at file:/apache-tomcat-7.0.23/webapps/ROOT/WEB-INF/lib/jruby-rack-1.1.3.jar!/vendor/rack-1.3.6/rack/builder.rb:51 
     (root) at /apache-tomcat-7.0.23/webapps/ROOT/WEB-INF/config.ru:1 

mysinatraapp.rbファイルは戦争中ですので、なぜそれが見つからないのか分かりません。 jrubyのコマンドラインから実行したときにアプリが正常に動作するので、コードと1.9の互換性の問題はないと思います。 web.xmlからこれらの行を削除するだけでも、アプリケーションの起動をうまく行かせることができます。

私の瓶のバージョンです のjruby-コア1.6.5.1.jar のjruby-ラック-1.1.3.jar のjruby-STDLIB-1.6.5.1.jar

答えて

0

私はこれを説明することができると思いますロード・パスの挙動が1.8から1.9(JRubyだけでなくMRIも)で微妙に変化しています。証人:

$ jruby -v -rpp -e 'pp $LOAD_PATH' 
jruby 1.7.0.dev (ruby-1.8.7-p357) (2012-01-12 0e83d96) (Java HotSpot(TM) Client VM 1.6.0_29) [darwin-i386-java] 
["/Users/nicksieger/Projects/ruby/jruby/lib/ruby/site_ruby/1.8", 
"/Users/nicksieger/Projects/ruby/jruby/lib/ruby/shared", 
"/Users/nicksieger/Projects/ruby/jruby/lib/ruby/1.8", 
"."] 

$ jruby -v --1.9 -rpp -e 'pp $LOAD_PATH' 
jruby 1.7.0.dev (ruby-1.9.3-p6) (2012-01-12 0e83d96) (Java HotSpot(TM) Client VM 1.6.0_29) [darwin-i386-java] 
["/Users/nicksieger/Projects/ruby/jruby/lib/ruby/site_ruby/1.9", 
"/Users/nicksieger/Projects/ruby/jruby/lib/ruby/shared", 
"/Users/nicksieger/Projects/ruby/jruby/lib/ruby/1.9"] 

だからあなたはおそらく明示的config.ru内部のロードパスに'.'または$servlet_context.getRealPath("/WEB-INF")を追加する必要があります。

関連する問題