繁体   English   中英

Sidekiq :: Rails:Class覆盖默认的Rails类

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM