RUBYLIB and shared libraries

Hi everyone,

I’m setting up my RUBYLIB variables for use with custom libraries I’ve
created. I have the following working properly:

C:/lib/wxruby/lib [this points to the custom library path I have set]

Everything is verified with ruby -e “puts $:” …

The first module I created is a module called public_instance_methods.rb

Location: C:/lib/wxruby/lib/public_instance_methods.rb

module PublicInstanceMethods

This method sets the default icon for the given window or frame

def set_icon_file(file)
icon_file = File.join(File.dirname(FILE),"…",“icons”,file)
set_icon Wx::Icon.new(icon_file, Wx::BITMAP_TYPE_ICO)
end

end

My default working project directory is:

E:\project\lib
“” \core
“” \icons
“” \images

In E:\project\lib\core\main.rb I have…

require ‘public_instance_methods’
include PublicInstanceMethods

class GuiMain < XrcFrameMain
def initialize
super()

set_icon_file("test.ico")

end
end

Which results into an error saying:

Icon file does not exist:
C:/lib/wxruby/lib/…/icons/kirin.ico (ArgumentError)

… which means that it’s looking in the lib directory of the included
module and not the working directory of the application. How should I
set this method up so that it includes the right path to the ico file?

You can use RAILS_ROOT but I’m sure there is a better way.

Jason P. wrote:

You can use RAILS_ROOT but I’m sure there is a better way.

wha??

This isn’t a rails discussion topic and has nothing to do with rails.
Someone else?

Sorry, man.

If you want to define the root of your application you could always set
a
global variable in your main.rb or set a global variable. Whenever you
call
use FILE it is the relative path to the file that is calling it so
in
your case the shared library file.

Jason P. wrote:

Sorry, man.

If you want to define the root of your application you could always set
a
global variable in your main.rb or set a global variable.

Thanks Jason. That’s what I needed:

main.rb

$file_path = FILE

set_icon_file($file_path,"…",“icons”,“test.ico”)

… then in my custom lib directory for PublicInstanceMethods I have:

This method sets the default icon for the given window or frame

def set_icon_file(path, *file)
icon_file = File.join(File.dirname(path), file)
set_icon Wx::Icon.new(icon_file, Wx::BITMAP_TYPE_ICO)
end

… and now everything works fine. If there is a better way of doing
this with regard to use of custom lib files, please let me know.

Thanks.