1

鉴于以下情况:

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_resource 设置为“sr”。

这个想法是,对于每个类,我只包含 RESTable 模块,调用 request_url 会根据我所包含的类的 @@object_resource 为我提供正确的 URL。

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

4

1 回答 1

0

我通过在模块上声明@@object_resource 解决了这个问题,然后如果@@object_resource 未更改(即空白)则引发错误。

这是更新的模块:

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
于 2013-08-12T10:08:03.327 回答