[英]Sidekiq::Rails:Class overrides default Rails class
Sidekiq :: Rails:Class覆盖全局Rails :: Class
我正在尝试调用Rails.cache方法,但出现错误“ Sidekiq :: Rails:Class的未定义方法'cache'”。 我检查了调试器,发现该方法中的'Rails'类类型是Sidekiq :: Rails:Class,而不是默认的Rails:Class。 我认为在运行时sidekiq覆盖了Rails主类。
def index
##
## >>>>>> Rails here is identified as Sidekiq::Rails:Class
@cities = Rails.cache.fetch("cities", :expires_in => 10.days) do
City.all
end
render :json => {:list => @cities}
end
您必须引用“根” Rails
类,这可以通过::
:
::Rails.cache.fetch('cities', express_in: 10.days) do
# ...
如果您有类似以下内容,请扩展我的答案:
module Sidekiq
# body
end
它将整个body
的默认命名空间设置为Sidekiq
,因此,如果您要引用其中的某个常量,就像使用Rails
,Ruby会首先搜索Sidekiq::Rails
,然后向上进行命名空间层次结构搜索::Rails
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.