2010-10-10 69 views
3

我一直在jRuby上部署Tomcat 6上的Rails 3,這讓我很困難。jRuby和Warbler,RVM和Tomcat的問題

我修改database.yaml和Gemfile中檢查JRuby的,這樣的事情:

if defined?(JRUBY_VERSION) 
    gem 'jdbc-mysql' 
    #gem 'jdbc-sqlite3' 
    gem 'activerecord-jdbc-adapter' 
    gem 'activerecord-jdbcmysql-adapter' 
    #gem 'activerecord-jdbcsqlite3-adapter' 
    gem 'jruby-openssl' 
    gem 'jruby-rack' 
    gem 'warbler' 
else 
    gem 'mysql' 
    gem "mongrel" 
    gem 'ruby-debug' 
end 

一些環境設置:

$ rvm -v 
rvm 1.0.14 

$ jruby -v 
jruby 1.5.3 (ruby 1.8.7 patchlevel 249) (2010-09-28 7ca06d7) (Java HotSpot(TM) 64-Bit Server VM 1.6.0_20) [x86_64-java] 

當我運行jruby -S bundle install一切順利。

這是當我嘗試做類似rake db:migratejruby -S rake db:migratewarble,我得到50退步警告和最終的stackoverflow。

我通過刪除鶯插件解決了這個問題,它並沒有像線Warbler::Task.new

接下來,我跑了warble config給我一個配置/ warbler.rb文件。最後,warble創建我的.war文件。到現在爲止還挺好。

現在我將.war文件移動到我的Tomcat webapps。一切工作正常,除了一個錯誤:

Oct 10, 2010 1:34:46 AM org.apache.catalina.core.ApplicationContext log 
SEVERE: Application Error 

org.jruby.rack.RackInitializationException: 
http://github.com/plataformatec/devise.git (at master) is not checked out. 
Please run 'bundle install' 

我通過進入我的webapps/MyApp的/ WEB-INF和運行jruby -S bundle install

它不再起作用一次且僅一次解決了這個問題,我不知道到底是怎麼回事。

回答

2

我相信這可以稱爲當前版本的鳴鳥的錯誤。在你的Gemfile中使用git倉庫在war文件中沒有得到正確的分階段發佈,而Bundler仍然在尋找磁盤上已簽出的倉庫。

鶯的將來版本可能會在創建war文件時沿bundle --deployment行做些事情。

現在,爲了解決問題,您可能需要供應設計代碼。

+0

消除:git指令解決了問題。但我也需要刪除我的warble.rb文件出於某種原因。 – Dex 2010-10-12 08:37:37

0

如果您使用warbler war構建war文件,則當前版本的warbler(1.3.6)也會顯示此行爲。我發現,用下面的命令建築工程建築:

warbler compiled war 

希望未來的版本將徹底解決這個問題了。