Hi Lukas,

You definitely can, by adding some temporary debug puts calls
interspersed in your method, and then calling your method either
using ./script/runner or from within a ./script/console session.

To make that method easier to test, I'd relocate that method outside
of ./app/controllers/application.rb and put it somewhere else, maybe
something like ./app/models/remote_socket_server.rb.

Possibly lame example, but:

###### add tmp debug calls to meth you want to test:
$ cat ./app/models/remote_socket_server.rb
class RemoteSocketServer

  HOST = ....
  PORT = ....

  def RemoteSocketServer.add_user(category, email)
    puts("add_user: category=#{category} email=#{email}") #DEBUG
    socket = TCPSocket.open(HOST, PORT)
    ...
  end
...
end

###### start console and call the meth:
$ ./script/console
...
>> RemoteSocketServer.add_user("Stuff", "f...@bar.net")
add_user: category=Stuff email=...@bar.net
...

###### or run the meth via runner:
$ ./script/runner 'RemoteSocketServer.add_user("Stuff",
"f...@bar.net")'
add_user: category=Stuff email=...@bar.net
...

Also note that instead of using puts to stdout, you could change those
debug puts calls to use the environment's logger instead:

    ...
     ActionController::Base.logger.debug("add_user:
category=#{category} email=#{email}") #DEBUG
    ...

such that when that meth is called (via console, runner, or in the web
app), you can just look at the env log:

$ tail -100 ./log/development.log | grep "^add_user"
add_user: category=Stuff email=...@bar.net
...

Once you're done with your temp testing of the meth, just wipe out
those debug puts/logger calls.

Jeff

On Feb 9, 9:59 am, lukas <lukas.zielin...@googlemail.com> wrote:
> Marnen,
>
> thanks for your feedback.
> Indeed, I'm a newbie ruby programer. I'll keep your advice in mind.
>
> I was just hoping I could run the method from the debugging console
> and check the output directly.
>
> On Feb 8, 11:23 pm, Marnen Laibow-Koser <li...@ruby-forum.com> wrote:
>
>
>
> > lukas wrote:
> > > Hello everyone,
>
> > > newbie question:
>
> > > I have a couple of methods that interact with a remote python server
> > > in application.rb.
> > > Is there a convenient way to debug them? e.g. run them from "ruby
> > > script/console" - debug-console and see the return values?
>
> > Just set a breakpoint, run script/server -u, and play around in the
> > debugger.
>
> > > Example-method:
>
> > >   def addUserToServer?(category_name, useremail_address)
>
> > That should be add_user_to_server.  camelCase is considered poor style
> > in Ruby.
>
> > >     socket = TCPSocket.open(host, port)
> > >     cmd = "COMMAND:adduser;;CAT:" + (category_name,
>
> > You know you've got mismatched parentheses, right?  And string
> > concatenation is more efficient with the "#{}" syntax.
>
> > >     cmd += ";;EMAIL:" + useremail_address
> > >     socket.puts(cmd)
> > >     result = socket.rcv(1024)
> > >     socket.close()
>
> > You don't need empty parentheses when a function doesn't take arguments.
> > Frankly, your code looks more like Java than Ruby.
>
> > >   end
>
> > > I'd like to see contents of result f.ex. and then return true or false
> > > accordingly.
>
> > > Rails is version 2.2.2
>
> > > Any help on this or some other best practice to check those methods is
> > > appreciated.
>
> > Test-first development will reduce the need for debugging.
>
> > > Lukas
>
> > Best,
> > -- 
> > Marnen Laibow-Koserhttp://www.marnen.org
> > mar...@marnen.org
> > --
> > Posted viahttp://www.ruby-forum.com/.

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to rubyonrails-t...@googlegroups.com.
To unsubscribe from this group, send email to 
rubyonrails-talk+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en.

Reply via email to