2010-10-10 56 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 

希望未来的版本将彻底解决这个问题了。