【问题标题】:Jruby-Rack - Could not find Rails engine root pathJruby-Rack - 找不到 Rails 引擎根路径
【发布时间】:2012-07-16 18:34:35
【问题描述】:

这是我在部署 Ruby on Rails Web 应用程序(使用 Jetty)时遇到的错误:

2012-07-17 13:11:25,595,INFO,service.nav.server - An exception happened during JRuby-Rack startup
Could not find root path for #<Usermanagement::Engine:0x302abefe>

--- Backtrace
RuntimeError: Could not find root path for #<Usermanagement::Engine:0x302abefe>
find_root_with_flag at file:/tmp/Jetty_0_0_0_0_2525_ui.0.0.1.SNAPSHOT.war____d9z055/webapp/WEB-INF/lib/gems.jar!/gems/railties-3.1.3/lib/rails/engine.rb:599
config at file:/tmp/Jetty_0_0_0_0_2525_ui.0.0.1.SNAPSHOT.war____d9z055/webapp/WEB-INF/lib/gems.jar!/gems/railties-3.1.3/lib/rails/engine.rb:479
railties at file:/tmp/Jetty_0_0_0_0_2525_ui.0.0.1.SNAPSHOT.war____d9z055/webapp/WEB-INF/lib/gems.jar!/gems/railties-3.1.3/lib/rails/engine.rb:423
initializers at file:/tmp/Jetty_0_0_0_0_2525_ui.0.0.1.SNAPSHOT.war____d9z055/webapp/WEB-INF/lib/gems.jar!/gems/railties-3.1.3/lib/rails/engine.rb:473
....

用户管理是以 Rails 引擎的形式本地构建的 gem。它是一个独立的可挂载引擎——用户管理是独立的命名空间。 gem 是用 Rails 3.1.3 构建的

检查了构建的 WAR 中的 gems.jar 文件,用户管理 gem 就在那里,以及 config 目录和 lib 目录等必需的东西。

我很难找到导致此中断的特定提交。看起来更像是环境问题。

欢迎任何建议!

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 rubygems rack rails-engines


    【解决方案1】:

    显然,这个错误实际上是由 Usermanagement gem 中包含 .class 文件引起的。

    由于我们构建服务器的权限要求,我们在构建过程中将 gems 安装到本地文件夹 - 即project-name/gems/gems

    这一切都很好,但是,然后 Warbler 被用于构建 war 文件,Warbler 从它在项目目录中找到的所有 .rb 文件创建类文件 - 之前创建 gems.jar 文件。因此,我们最终在 gems.jar 存档中找到了 .class 文件。

    对于为什么拥有类文件会破坏一切,我仍然有些茫然 - 但是,没有它们确实可以解决所有问题:)

    解决方案

    告诉 Warbler 不要在 webapp 中包含 gems 目录:(在 warbler.rb 中)

    config.dirs = %w(app config lib log tmp)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-05
      • 1970-01-01
      • 1970-01-01
      • 2010-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多