簡體   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