代码之家  ›  专栏  ›  技术社区  ›  randombits

Tomcat正在处理JRuby on Rails应用程序的请求,直到应用程序完全加载

  •  3
  • randombits  · 技术社区  · 14 年前

    我有一个edge案例,尽管是一个非常客户可见的案例,Tomcat在JRuby下运行的Ruby on Rails堆栈正确加载所有依赖项之前就开始处理请求。

    一旦Tomcat重新启动,就会发生类似以下情况:

    undefined method `utc_offset' for nil:NilClass
     [RAILS_ROOT]/gems/gems/activesupport-2.3.8/lib/active_support/values/time_zone.rb:206:in `<=>'
    

      @timezones = ActiveSupport::TimeZone.all
    

    如果您再等待几秒钟并刷新请求页面,它将不会加载任何问题。

    有没有办法确保Tomcat在加载整个堆栈、ActiveSupport、ActiveRecord等之前不会开始处理这些请求?有没有人经历过类似的症状?

    2 回复  |  直到 14 年前
        1
  •  1
  •   Nick Sieger    14 年前

    这听起来像是JRuby Rack中的一个可能的bug,假设这就是您在Tomcat中运行Rails应用程序所使用的。JRuby Rack应该在处理请求之前加载整个config/environment.rb,所以我不确定这会发生在您身上,但也许我忽略了一些事情。你能分享更多关于你是如何在 http://kenai.com/jira/browse/JRUBY_RACK http://bugs.jruby.org ?

        2
  •  0
  •   Peter Å tibraný    14 年前

    javax.servlet.Filter 这将拦截所有请求,并在加载应用程序之前拒绝它们。当应用程序完全加载时,您将要求筛选器停止拒绝请求。(但这不是纯Ruby解决方案)。