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