From: "Jesús Gabriel y Galán" Date: 2009-10-12T06:57:55+09:00 Subject: Re: newbie problem with Ruby On Sun, Oct 11, 2009 at 11:03 PM, Alex Gd wrote: > Hi there, > > just getting to know the language by writing console twitter client, I'm > getting this error: > >        ArgumentError: wrong number of arguments (1 for 0) >  from ./twitter_client.rb:7:in `initialize' >  from ./twitter_client.rb:7:in `new' >  from ./twitter_client.rb:7 >  from (irb):1:in `require' >  from (irb):1 > > When trying to load the code below. > > class TwitterMethod >  Statuses = TwitterMethod.new("statuses/show") > >  attr_reader :credentials >  attr_writer :credentials > >  TwitterHome = "http://www.twitter.com/" > > >  def initialize(methodLocation) >    @methodUrlString = methodLocation >  end > > public >  def call() >    response >    Net::HTTP.start(TwitterHome).start{|http| >      request = Net::HTTP::Get.new(@methodUrlString) >      @credentials.sign(request) >      response = http.request(request) >    } >    return JSON.parse(response) >  end > > end > > > > I can't work out what is going wrong here, I am guessing that its > something to do with the class not being initialized by the time I call > TwitterMethod.new to set the class constant. I also don't know if this > is a particularly rubyish way to do this, please let me know if theres a > better way. By default, the initializer of a class has no arguments. You are calling TwitterMethod.new (which ends up calling initialize) with an argument, instead of 0, before overriding the initialize method. I don't know what you mean to do with the Statuses constant, so I'm not sure if this is the best way to achieve it. But if you just want to get rid of the error, put the initialize method before the call the TwitterMethod.new. Also, attr_accessor does the same as reader and writer. Jesus.