使用雾和AWS方法时的ruby对象行为

时间:2016-03-06 22:18:52

标签: aws-sdk fog

我有一个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文件本身可以正常工作。

我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

我认为问题来自于go test $(go list ./... | grep -v /vendor/) 在Ruby中是如何工作的,这有点奇怪。特别是,与大多数其他方法不同,initialize忽略提供的返回值。它总是会返回它定义的类的实例。因此,在这种情况下,您将获得Aws_Helper实例(而不是对连接本身的引用)。如果您将方法的名称更改为initialize,则它应该按照您的布局方式工作。