Forum: Ruby Modules, require, include, toplevel constants and Watir

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Chad M. (Guest)
on 2009-03-25 23:21
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.
Bret P. (Guest)
on 2009-03-26 02:40
(Received via mailing list)
On Wed, Mar 25, 2009 at 4:18 PM, Chad M. <removed_email_address@domain.invalid> 
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: removed_email_address@domain.invalid

Watir Training: Portland/Beaverton April 16-17
www.watircraft.com/training
Chad M. (Guest)
on 2009-03-27 11:59
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 topic is locked and can not be replied to.