Modules, require, include, toplevel constants and Watir

Hi guys,

Despite working in IT for almost 2 years now I consider myself a
programming novice. Its probably my art degree. Anyway, I’m having
trouble figuring out what is going on here.

I’m using Watir here, but I suppose this would hold true with any
module.

To give a little background. As far as I can tell, the Watir module
holds the IE class which holds the WinClicker class

This is the code:
Code:

require ‘watir’

WinClicker.new

This will throw an error saying that the constant WinClicker is
uninitialized

Now, if I do this
Code:

require ‘watir’

Watir::IE
WinClicker.new

It works.

It also works with:
Code:

require ‘watir’
include Watir
WinClicker.new

However, it is not a good idea to include Watir. In 1.6.2 of watir,
including it can break scripts and I’m told its generally a poor idea to
include at the global level.

If I use:
Code:

require ‘watir’
Watir::IE::WinClicker.new

I get a warning in the way I am referencing the toplevel class
WinClicker.

My questions are:

  1. What is Watir::IE doing in the second code example that allows me to
    then use WinClicker
  2. Is doing a Watir::IE the same as including Watir?
  3. What does that warning when referencing Watir::IE::WinClicker imply
    and what problems can arise from doing that?
  4. If anyone knows, how should I be dealing with the creation of new
    WinClicker objects so as to avoid the warning AND avoid including Watir.

Thanks a million.

On Wed, Mar 25, 2009 at 4:18 PM, Chad M. [email protected] wrote:

  1. What is Watir::IE doing in the second code example that allows me to
    then use WinClicker

There is an autoload set on Watir::IE. This is new with Watir 1.6.

It is the same as “require ‘watir/ie’”. This is probably what you want
to do
now.


Bret P.
CTO, WatirCraft LLC, www.watircraft.com
Lead Developer, Watir, www.watir.com

Blog, www.io.com/~wazmo/blog
Twitter, www.twitter.com/bpettichord
GTalk: [email protected]

Watir Training: Portland/Beaverton April 16-17
www.watircraft.com/training

That explains a lot. Thanks Bret. As it turns out, I was previously
using ‘watir/ie’ before but I had the insane notion that the ie.rb
file’s name was in caps so I was using ‘watir/IE’ which gave a different
warning about the constant ATTACHER already being initialized. I am
totally baffled on what made me think this but what can ya do. Anyway,
thanks again.

Chad

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs