Ruby 在模块方法内访问类变量

Ruby 在模块方法内访问类变量,ruby,Ruby,鉴于以下情况: module RESTable BASE_URL = "http://url.domain/api/rest" LOGIN_URL = "#{BASE_URL}/login" LOGOUT_URL = "#{BASE_URL}/logout" def request_url "#{BASE_URL}/mbo/#{@@object_resource}/_format=json" rescue NameError p "@@object_res

鉴于以下情况:

module RESTable
  BASE_URL  = "http://url.domain/api/rest"
  LOGIN_URL = "#{BASE_URL}/login"
  LOGOUT_URL = "#{BASE_URL}/logout"

  def request_url
    "#{BASE_URL}/mbo/#{@@object_resource}/_format=json"
  rescue NameError
    p "@@object_resource was not defined"
  end
end

class ServiceRequests
  include RESTable
  @@object_resource = "sr"

  def initialize
    binding.pry
  end
end
在pry会话中,调用request_url会产生:

"@@object_resource was not defined"
但是@@object\u资源被设置为“sr”

其思想是,对于每个类,我只需包含可重启模块,调用request\u url将根据我所包含的类的@object\u资源为我提供正确的url


更一般地说,如何从模块内调用类变量?

我通过在模块上声明@@object\u资源解决了这个问题,然后如果@@object\u资源未更改(即为空),则会引发一个错误

以下是更新的模块:

module RESTable
  BASE_URL  = "http://url.domain/api/rest"
  LOGIN_URL = "#{BASE_URL}/login"
  LOGOUT_URL = "#{BASE_URL}/logout"
  @@object_resource = ""

  def request_url
    raise StandardError, "@@object_resource can't be blank" if @@object_resource == ""
    "#{BASE_URL}/mbo/#{@@object_resource}/_format=json"
  rescue NameError
    p "@@object_resource was not defined"
  end
end