【发布时间】:2014-12-24 06:32:35
【问题描述】:
我的 Rails 4.1.4 应用程序在多个 Puma 实例上运行时遇到一个奇怪的问题。该应用程序有一个被 SOA 架构中的其他系统访问的 API。我们有一个高流量的系统,它会接到很多电话。如果在启动应用程序时,我们有客户端调用我们的端点之一(称为 track),那么似乎某些 Puma 工作人员没有将类正确加载到内存中,我们开始收到类似的错误:
FATAL -- :
AbstractController::ActionNotFound (The action 'track' could not be found for ArticlesController):
vendor/bundle/ruby/1.9.1/gems/actionpack-4.1.4/lib/abstract_controller/base.rb:131:in `process'
vendor/bundle/ruby/1.9.1/gems/actionview-4.1.4/lib/action_view/rendering.rb:30:in `process'
还有……
FATAL -- :
AbstractController::ActionNotFound (The action 'find' could not be found for MatchesController):
vendor/bundle/ruby/1.9.1/gems/actionpack-4.1.4/lib/abstract_controller/base.rb:131:in `process'
vendor/bundle/ruby/1.9.1/gems/actionview-4.1.4/lib/action_view/rendering.rb:30:in `process'
请注意,track 事件仅在 ArticlesController 上,但是一旦我们遇到这种情况,它就无法向任何控制器发出请求。
如果我禁用客户端对 track 端点的调用并且我退回了我的应用程序,那么一切正常。如果我等到系统启动并再次打开 track 调用,那么一切都很好。
只有在应用启动期间进行 track 调用时才会出现此问题。
我不知道要提供什么信息来帮助诊断此问题。如果有人对如何进行调试有预感,我会在问题中添加更多细节。
【问题讨论】:
-
只是一个预感,也许可以尝试加载你的控制器:blog.plataformatec.com.br/2012/08/…
标签: ruby-on-rails ruby-on-rails-4 puma