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

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:

require ‘watir’

This will throw an error saying that the constant WinClicker is

Now, if I do this

require ‘watir’


It works.

It also works with:

require ‘watir’
include Watir

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:

require ‘watir’

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

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

Bret P.
CTO, WatirCraft LLC,
Lead Developer, Watir,

GTalk: [email protected]

Watir Training: Portland/Beaverton April 16-17

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.


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