From: Stefano Crocco Date: 2009-07-17T16:25:55+09:00 Subject: Re: trouble with puts On Friday 17 July 2009, Venkat Akkineni wrote: > |Gary Wright wrote: > |> On Jul 17, 2009, at 2:09 AM, Venkat Akkineni wrote: > |>>> ruby something.rb > |>> > |>> # I don't see the expected Output > |>> > |>> > |>> Could somebody throw some light on this. > |> > |> Code that is within a method definition doesn't get > |> executed until an instance is created and the method is > |> called. > |> > |> Add the following to your third example after the class > |> definition block for Something: > |> > |> Something.new.print_something > |> > |> Gary Wright > | > |Thanks for replying Gary and stefano First of all, I apologize for not having read your message carefully: I completely missed the fact that the print_something method was inside a class. At any rate, most of what I said in my answer is still correct. In the code you posted, you didn't call the Something#print_something but only defined it. > |This I assume is thrown because the interpreter cannot find the file. I > |ran the irb command from inside the folder containing this file. Doesn't > |irb see the file? You need to require the file for irb to see it. Try issuing the following command: require 'something' By the way, in the code you posted there's no mention of something called Test. This means that the code you're running is different from what you showed us. In this situation, is difficult to for us to help you. Please, either show us the complete code or run (and report problems with) the code you posted. > |Addressing what steffano said, Well I have called the print_something > |method from inside the class's constructor. Should I not assume that > |when the file is run the class's constructor will be called and hence > |the method will be called. No, you didn't (at least in the code you posted). As I said above, you only defined the method but never actually called it. To do so in a class constructor, you should have defined an instance method called initialize and put a call to print_something there: class Something def initialize print_something end end The initialize method is automatically called when you do Something.new and, in turn, it would call print_something. But you didnt't define an initialize method and didn't call Something.new. Stefano