一个基本问题 - 如何访问模块内的函数,然后是另一个模块,然后是类。
在宝石中 -
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)
答案 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"