我有一个边缘案例,尽管客户可见一个,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等之前不会开始处理这些请求?有没有人经历过任何类似的症状?
答案 0 :(得分:1)
这听起来像JRuby-Rack中可能存在的错误,假设您正在使用Tomcat中运行Rails应用程序。 JRuby-Rack应该在处理请求之前加载整个config / environment.rb,所以我不确定这会发生在你身上,但也许我忽略了一些东西。您可以分享一些关于如何在http://kenai.com/jira/browse/JRUBY_RACK或http://bugs.jruby.org引发错误的数据(或者代码或应用程序再现问题)吗?
答案 1 :(得分:0)
我不确定Tomcat中是否存在类似的内容,但您可以编写一个javax.servlet.Filter
来拦截所有请求,并在您的应用程序加载之前拒绝它们。当应用程序完全加载时,您要求过滤器停止拒绝请求。 (但这不是纯Ruby解决方案。)