我有一个aws_helper.rb文件
require 'yaml'
require 'fog'
class Aws_Helper
def initialize()
conf = YAML::load_file("config.yml")
@connection = Fog::DNS.new( :provider=> 'aws',
:aws_access_key_id => conf['aws_access_key'],
:aws_secret_access_key => conf['aws_secret_key']
)
return @connetion
end
end
如果我使用其他文件中的类,请说test.rb
require_relative 'aws_helper.rb'
connection = Aws_Helper.new()
connection.zones.get("ZXASDFS443")
p connection
我收到了错误,
#(NoMethodError)的未定义方法`zones'
但是如果我执行@ connection.zone.get(“ZXASDFS443”),那么从aws_helper.rb文件本身可以正常工作。
我在这里做错了什么?
答案 0 :(得分:1)
我认为问题来自于go test $(go list ./... | grep -v /vendor/)
在Ruby中是如何工作的,这有点奇怪。特别是,与大多数其他方法不同,initialize
忽略提供的返回值。它总是会返回它定义的类的实例。因此,在这种情况下,您将获得Aws_Helper实例(而不是对连接本身的引用)。如果您将方法的名称更改为initialize
,则它应该按照您的布局方式工作。