ruby - Why do I get "Undefined method ::new" in simple classes? -


i writing atm-system-like socket/server solution. appreciate if tell me i'm missing. reason, following error running stub test suite:

# running tests:  .e  finished tests in 0.002411s, 829.4384 tests/s, 414.7192 assertions/s.    1) error: test_0001_connects_to_a_host_with_a_socket(atmclient::connection): nomethoderror: undefined method `new' #<spoofserver:0x9dce2dc @clients=[], @server=#<tcpserver:fd 5>>     /media/wildfyre/files/programming/kth/progp/atm/spec/client/spoofserver.rb:12:in `start'     /media/wildfyre/files/programming/kth/progp/atm/spec/client/client_spec.rb:12:in `block (3 levels) in <top (required)>'  2 tests, 1 assertions, 0 failures, 1 errors, 0 skips 

my minispec file is:

require_relative '../spec_helper.rb' require_relative '../../lib/atmclient.rb' require_relative 'spoofserver.rb'  describe atmclient   "can created no arguments"     atmclient.new.must_be_instance_of atmclient   end    describe 'connection'     "connects host socket"       spoof = spoofserver.new.start       client = atmclient.new.connect       spoof.any_incoming_connection?.must_be true       spoof.kill     end   end end 

my spoofserver file is:

require 'socket'  class spoofserver    def initialize   end    def start     @clients = []     @server = tcpserver.new 1234      @listener_thread = new thread       @clients.add @server.accept     end   end    def any_incoming_connection?     @clients.size > 0   end    def kill     @listener_thread.exit     @clients.each {|c| c.close}   end  end 

as can read in trace of calls stack:

nomethoderror: undefined method `new' #<spoofserver:...>     /.../spec/client/spoofserver.rb:12:in `start' 

the error inside start method defined in spoofserver.rb, @ line 12, wrong line is:

@listener_thread = new thread 

that should be:

@listener_thread = thread.new 

as have written it, doing calling new method passing thread class argument. since no new method defined instances of spoofserver class nomethoderror exception.


Comments