Ruby快速类实例范围

时间:2013-05-11 01:32:10

标签: ruby scope

我有一个快速的问题,可能归结为一些愚蠢的事情。我有一个扩展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

问题在于,当我在类中检查令牌是否正常工作时,确实如此。但是,当我检查类外部的构造对象时,它不起作用。

@client.get(url) returns Net::HTTPOk来自班级

auth = OauthFigshare.new(inputs)
auth.get(url)

这会返回Net::HTTPUnauthorized

我在这里没有得到什么范围?

编辑以包含实际课程

1 个答案:

答案 0 :(得分:0)

不使用initialize方法的返回值。看起来你真的想要覆盖self.new。