[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Require and OO

aidy

5/23/2006 9:22:00 AM

Hi,

[wasn't sure which group to submit this post to Watir or Ruby, but even
though I use Watir, I think it is more of a Ruby question]

If I use 'require' for example on two files within a master file:

require 'browser'
require 'logon'

And these two files contain this code


browser.rb

require 'watir'

def start_browser (url)
@ie = Watir::IE.new
@ie.goto(url)
@ie.maximize()
end


logon.rb

def login (username, password)

@ie.link(:text, 'Log in').click
@ie.text_field(:name, "userid").set(username)
@ie.text_field(:name, "password").set(password)
@ie.button(:value,'Log in').click
end

Will the i.e. instance be the same in logon as browser, or are they
different objects?
Should I be using this pre-fix '@@'?

I am uncomfortable that Ruby allows me to slide into functional
programming while I am consciously trying to move to OO.Is this a
problem do you think, for Web scripting?

Aidy

1 Answer

Timothy Goddard

5/23/2006 11:54:00 AM

0

Ruby code is never truly functional. All code written at the base level
is executed in the context of a singleton instance of Object called,
imaginatively, main. This should work, although it isn't a good idea.
This is really no different from using a global variable. Try wrapping
the whole thing up in a class.

e.g.

require 'watir'

class Browser
def initialize(url)
@ie = Watir::IE.new
@ie.goto(url)
@ie.maximize()
end
def login(username, password)
@ie.link(:text, 'Log in').click
@ie.text_field(:name, "userid").set(username)
@ie.text_field(:name, "password").set(password)
@ie.button(:value,'Log in').click
end
end

b = Browser.new

This is a much cleaner way of solving the problem. Ruby is fairly
lenient and doesn't force you to use clean concepts all the time like
languages such as Java do (this has upsides and downsides), but you
will get the most out of it if you use it properly.