【发布时间】:2014-05-15 18:00:40
【问题描述】:
早上好,我们在使用 Sidekiq 处理队列时遇到了烦人的问题。这个问题似乎发生在我们第一次执行 Sidekiq(渴望加载资源)和生产环境中。
基本上,我们将我们的类在模块中分开,以获得更好的命名模式。
这是一个出现问题的示例模块
module MyApp
module APIIntegration
class Client
def driver
@driver ||= MyApp::APIIntegration::Driver.new
end
end
end
end
我们得到“自动加载常量 MyApp::APIIntegration::Driver 时检测到循环依赖”
知道为什么会这样吗?我们应该通过调用 Driver 而不是完全限定名称来引用驱动程序吗?我可以尝试如何重现此问题?
欢迎任何建议,非常感谢
【问题讨论】:
-
能把Driver Module/Class的代码和这些文件的存放路径显示出来吗?
-
这不是循环依赖问题。这是因为模块的命名和文件的位置
-
它们处于同一级别。类似于 /lib/my_app/api_integration/client.rb 和 /lib/my_app/api_integration/driver.rb
-
1.
module APIIntegration应该是module ApiIntegration2.@driver ||= MyApp::APIIntegration::Driver.new到@driver ||= Driver.new
标签: ruby-on-rails ruby autoload sidekiq