Ruby快速类实例作用域

Ruby快速类实例作用域,ruby,scope,Ruby,Scope,我有一个快速的问题,可能归结为一些愚蠢的事情。我有一个类,它扩展了OAuth::AccessToken,并使用实例变量(@),这样每当它构造一个对象时,这些变量在该实例中都是唯一的。然而,当我试图从这个类返回最终的对象时,我得到了一个错误。一个简单的例子: require 'oauth' class OauthFigshare < OAuth::AccessToken def initialize (consumerkey, consumersecret, accesstoken

我有一个快速的问题,可能归结为一些愚蠢的事情。我有一个类,它扩展了OAuth::AccessToken,并使用实例变量(
@
),这样每当它构造一个对象时,这些变量在该实例中都是唯一的。然而,当我试图从这个类返回最终的对象时,我得到了一个错误。一个简单的例子:

require 'oauth'

class OauthFigshare < OAuth::AccessToken
    def initialize (consumerkey, consumersecret, accesstoken, accesstokensecret)
    @consumerkey = consumerkey
    @consumersecret = consumersecret
    @accesstoken = accesstoken
    @accesstokensecret = accesstokensecret
    @apiurl = "http://api.figshare.com"

    @consumer = OAuth::Consumer.new(@consumerkey,@consumersecret,{:site=> @apiurl})
    @token = { :oauth_token => @accesstoken, :oauth_token_secret => @accesstokensecret}

    puts @consumer.class
    puts @token


    @client = OAuth::AccessToken.from_hash(@consumer, @token)
    puts @client
    puts @client.get('/v1/my_data/articles')
    return @client
   end
end
这将返回
Net::HTTPUnauthorized

关于范围,我没有得到什么


编辑以包含实际类

不使用初始化方法的返回值。看起来您实际上想要覆盖self.new。

请在“我在这里做xyz”中填写更多代码。。。我在问题中包括了实际的类。我的印象是所有ruby块都是返回一些值的表达式。所以对于initialize方法不是这样的?我最初只是让最后一行构造客户机,假设它会返回该对象,但当我遇到问题时,我想显式检查。如果我尝试将两者分开,我可以确认将
initialize
方法更改为
self.new
有效(因此,只有当使用变量调用
new
时,它才会调用
initialize
)它似乎破坏了原始
new
方法的功能。每个方法都有一个返回值,new与initialize是不同的方法。new调用initialize但忽略返回值。
auth = OauthFigshare.new(inputs)
auth.get(url)