Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Sidekiq::Rails:Class覆盖默认的Rails类_Ruby On Rails_Ruby_Sidekiq - Fatal编程技术网

Ruby on rails Sidekiq::Rails:Class覆盖默认的Rails类

Ruby on rails Sidekiq::Rails:Class覆盖默认的Rails类,ruby-on-rails,ruby,sidekiq,Ruby On Rails,Ruby,Sidekiq,Sidekiq::Rails:类覆盖全局Rails::类 我试图调用Rails.cache方法,但在未定义Sidekiq::Rails:Class的方法'cache'时出错。我检查了调试器,发现这个方法中的“Rails”类类型是Sidekiq::Rails:类,而不是默认的Rails:类。我认为在运行时sidekiq覆盖了Rails主类 def index ## ## >>>>>> Rails here is identified as Si

Sidekiq::Rails:类覆盖全局Rails::类

我试图调用Rails.cache方法,但在未定义Sidekiq::Rails:Class的方法'cache'时出错。我检查了调试器,发现这个方法中的“Rails”类类型是Sidekiq::Rails:类,而不是默认的Rails:类。我认为在运行时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


您必须引用“root”Rails类,这在以下情况下是可能的:

为了扩展我的回答,如果您有以下情况:

module Sidekiq
  # body
end

它将整个主体的默认名称空间设置为Sidekiq,因此,如果您想引用其中的某个常量,就像您对Rails所做的那样,Ruby会首先搜索Sidekiq::Rails,然后向上搜索名称空间层次结构,搜索::Rails

太好了,谢谢你!但是,我应该这样使用Rails类吗?@HoussemFat,不,不是真的,这解释了我编辑过的答案。只有当常量名称解析中存在歧义时,才必须使用::。好吧,sidekiq团队使用全局Rails应用程序中使用的相同常量似乎有点奇怪。谢谢你的回复!
module Sidekiq
  # body
end