Jon*_*her 5 ruby haml ruby-on-rails ivar
我有一个Rails 3/ruby 1.9.2 webapp.每隔一段时间 - 它可能只有100000中的1个请求 - 我得到一个我无法解释的错误报告.
确切的错误会有所不同,但它们似乎与我的视图中的实例变量突然变为零无关.最近最明显的例子是这个代码在帮手中 -
@swf_object_count||=0
@swf_object_count+=1
Run Code Online (Sandbox Code Playgroud)
- 提出"NoMethodError:未定义的方法`+'为nil:NilClass".但请注意,错误不仅限于这种情况,这两行代码仅用于说明,而不是可以解决问题的方法.
错误基本上不可能重现:我自己从未见过它,只看到了它产生的错误报告.我相信当我们从REE切换到ruby 1.9.2时,错误首次出现.
可能相关或不相关的其他详细信息:
我非常难以追踪这一点.任何建议,或有任何人看到任何听起来相似的东西?
我的第一个想法是线或纤维——但你说你不使用它们。嗯...这可能是由陈旧的会话触发的吗?
这确实是一个非常广泛且定义松散的问题..
也许您可以编写一个脚本来分析您的日志文件,并尝试缩小发生这种情况的时间/路径。但这也很难调试,因为您可能在此过程中进行了一些代码更改,其中一些更改产生了看起来相似的有效错误。
Unicorn 实例可能会死亡,然后重新启动。这可能会扰乱当前会话。这可能是您可能想要尝试的东西 - 例如,使用具有两个独角兽的测试环境,在会话中杀死一个,然后看看这如何影响您的日志。
您可能应该安装一个工具,每当触发异常时,Rails 服务器都会通过电子邮件向您发送详细的日志记录..这可能是更清楚地了解那里发生的情况的最佳方法..
例如:您的 Gemfile 中的这个 Gem:
# Receive exception notifications from production
gem 'exception_notification_rails3', :require => 'exception_notifier'
Run Code Online (Sandbox Code Playgroud)
并在您的 config/environments/production.rb 文件中:
config.middleware.use ExceptionNotifier,
:email_prefix => "[Exception] ",
:sender_address => %{"Exception Notifier" <your-system@your-domain.com>},
:exception_recipients => %w{person1@your-domain.com person2@your-domain.com}
Run Code Online (Sandbox Code Playgroud)
另请参阅: https: //github.com/railsware/exception_notification