3

我一直很难将 jRuby on Rails 3 部署在 Tomcat 6 上。我让它只工作了一次。

我修改了我的 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:migrate或者warble我得到 50 条弃用警告和最终的堆栈溢出。

我通过删除莺插件解决了这个问题,它不喜欢这条线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

它不再起作用,我不知道发生了什么。

4

2 回答 2

2

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

Warbler 的未来版本可能会按照bundle --deployment您创建war 文件时的方式执行某些操作。

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

于 2010-10-11T16:01:05.307 回答
0

当前版本的 warbler (1.3.6) 如果您使用warbler war. 我发现使用以下命令进行构建是有效的:

warbler compiled war

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

于 2012-12-07T07:02:19.140 回答