jRuby和Warbler,RVM和Tomcat的问题

时间:2010-10-10 10:59:35

标签: jruby rvm jrubyonrails warbler

我一直很难在Tomcat 6上部署Rails 3上的jRuby。我只使用了一次。

我修改了我的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个DEPRECATION WARNING和最终的堆栈溢出。

我通过删除warbler插件解决了这个问题,它不喜欢行Warbler::Task.new

接下来,我运行warble config给我一个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 个答案:

答案 0 :(得分:2)

我相信这可以被称为当前版本的Warbler中的一个错误。在Gemfile中使用git存储库并不能在war文件中正确进行,Bundler仍在磁盘上查找已检出的存储库。

在创建war文件时,Warbler的未来版本可能会在bundle --deployment的行中执行某些操作。

目前,要解决此问题,您可能需要提供设计代码。

答案 1 :(得分:0)

如果使用warbler war构建war文件,则当前版本的warbler(1.3.6)也会出现此行为。我发现使用以下命令构建:

warbler compiled war

希望未来的版本能更完整地解决这个问题。