0

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

在宝石中 -

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)
4

2 回答 2

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"
于 2012-05-25T04:36:29.463 回答
1

你有一个错字。应该

Handsoap::Http::Request

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

def self.set_trust_ca_file(ca_file)
  # ...
end
于 2012-05-24T21:31:57.120 回答