Ruby - 访问模块和类中的函数

时间:2012-05-24 21:31:11

标签: ruby

一个基本问题 - 如何访问模块内的函数,然后是另一个模块,然后是类。

在宝石中 -

module Handsoap
  module Http

    # Represents a HTTP Request.
    class Request
      attr_reader :url, :http_method, :headers, :body, :username, :password, :trust_ca_file, :client_cert_file, :client_cert_key_file
      attr_writer :body, :http_method

      def set_trust_ca_file(ca_file)
         @trust_ca_file = ca_file

      end
    end
  end
end

在我的档案中,我正在尝试这个 -

Handsoap:Http::Request.set_trust_ca_file('/etc/ssl/certs/ca-certificates.crt')

:Http is not a class/module (TypeError)

2 个答案:

答案 0 :(得分:1)

你有一个错字。应该是

Handsoap::Http::Request

此外,您的方法应该是类实例方法

def self.set_trust_ca_file(ca_file)
  # ...
end

答案 1 :(得分:1)

我认为检查的答案不正确。 set_trust_ca_file()方法不是类方法。它是设置和实例变量,因此它是一个实例方法。

您需要在Request类的实例上调用set_trust_ca_file():

var = Handsoap::Http::Request.new
var.set_trust_ca_file(ca_file)

您也可以完全取消该方法,因为attr_accessor语句将使类实例变量@trust_ca_file可以从类外部设置:

var = Handsoap::Http::Request.new
var.trust_ca_file = "new_value"