if require 'fox'
require 'fox'
require 'fox/colors'
include Fox
elsif require 'fox12'
require 'fox12'
require 'fox12/colors'
include Fox
else
# do something different
exit
end
However, this doesn't work -> LoadError: No such file to load -- fox.
How can I overcome this problem.
[snip]
> However, this doesn't work -> LoadError: No such file to load -- fox.
> How can I overcome this problem.
require returns true if successful and false if already loaded.
If a file is not found, it raises an exception.
Something like this?
begin
require 'fox'
require 'fox/colors'
rescue
begin
require 'fox12'
require 'fox12/colors'
rescue
puts "Oops..."
end
end
include Fox
I don't recall nesting begin/end that way before,
but it should work... someone see a better way?
Hal
I use the following code in XDCC-Fetch. It works with Fox 1.0, Fox 1.2,
and Fox installed via rubygems. In Fox 1.0 several classes have
different names than in 1.2, so I create aliases. Sometimes the
arguments of method calls are also different, for this I set the
FOXVERSION which I use to switch between different code.
# Load FXRuby: try gem, then Fox 1.2, then Fox 1.0
begin
# try fxruby gem
require 'rubygems'
require_gem 'fxruby', '>= 1.1.0'
require 'fox12'
require 'fox12/colors'
FOXVERSION="1.2"
include Fox
rescue LoadError
# no gem? try fox12 direct.
begin
require "fox12"
require "fox12/colors"
FOXVERSION="1.2"
include Fox
rescue LoadError
# no gem, no fox12? try fox 1.0
require "fox"
require "fox/colors"
# grep for FOXVERSION to find all code that depends on this
FOXVERSION="1.0"
include Fox
FXMenuBar = FXMenubar
FXToolTip = FXTooltip
FXStatusBar = FXStatusbar
end
end
Can somebody PLEASE improve on the code below?
I mean... "require 'fox'" should just do it.
I know RUBY_OPTIONS can help with gems, but this fox vs fox12 stinks, too.
... and this FOXVERSION and aliasing stuff... man, horrible.
Note I use neither gems nor fox, but if this is 'normal' to get it
working, I ain't gonna use them!!
(at least put the line "include Fox" below the rest, only once instead of
three times...)
+--- Kero ----------------------- kero@chello@nl ---+
| all the meaningless and empty words I spoke |
| Promises -- The Cranberries |
+--- M38c --- http://httpd.chello.nl/k.vangelder ---+
martinus
> Can somebody PLEASE improve on the code below?
> I mean... "require 'fox'" should just do it.
> I know RUBY_OPTIONS can help with gems, but this fox vs fox12 stinks, too.
> .... and this FOXVERSION and aliasing stuff... man, horrible.
Just to make something clear here: There were a number of API changes
between FOX versions 1.0 and 1.2, and thus FOX version 1.2 isn't
completely backwards-compatible with FOX 1.0.
It sounds like the original poster (Peter) in is the fortunate
situation that his code happens to run just fine under either FOX
version, but that's definitely the exception and not the rule. IMO, it
would be preferable for application developers to go ahead and update
their application(s) to FOX 1.2.
I'm kinda shocked that it runs under both versions. I mean - FOX 1.0
used 'Menubar' and FOX 1.2 introduced better consistency in the API
with 'MenuBar'. If your application uses a menu bar for it's menus
then you'd have to write something to switch the spelling...
-Rich