[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Paths, gentleman, paths

Ohad Lutzky

11/6/2006 1:14:00 PM

I have this bit of code in the beginning of an application I'm writing
(in main.rb):

require 'pathname'

p = Pathname.new($0)

if p.basename.to_s == 'main.rb'
Dir.chdir p.parent.to_s
end

require 'gui/main_window'
... # (rest of requires, application itself)

The check whether it's "main.rb" or not is so this doesn't happen for
Rake. Now, it works well, but it's ugly. The reason I don't just go
ahead and use ':' is that I use glade, as well as some other files which
I need to be able to find. This is currently in development, so I'd
prefer to avoid forcing people to install the program in predetermined
locations (/usr/local/bin, /usr/local/share/my_app_files, et cetera).

Any cleaner solution?

--
Posted via http://www.ruby-....

2 Answers

Robert Klemme

11/6/2006 1:24:00 PM

0

On 06.11.2006 14:13, Ohad Lutzky wrote:
> I have this bit of code in the beginning of an application I'm writing
> (in main.rb):
>
> require 'pathname'
>
> p = Pathname.new($0)
>
> if p.basename.to_s == 'main.rb'
> Dir.chdir p.parent.to_s
> end
>
> require 'gui/main_window'
> ... # (rest of requires, application itself)
>
> The check whether it's "main.rb" or not is so this doesn't happen for
> Rake. Now, it works well, but it's ugly. The reason I don't just go
> ahead and use ':' is that I use glade, as well as some other files which
> I need to be able to find. This is currently in development, so I'd
> prefer to avoid forcing people to install the program in predetermined
> locations (/usr/local/bin, /usr/local/share/my_app_files, et cetera).
>
> Any cleaner solution?
>

Dir.chdir( File.dirname( $0 ) ) if File.basename $0 == 'main.rb'

or

dir, file = File.split $0
Dir.chdir dir if file == 'main.rb'

Cheers

robert

David Vallner

11/7/2006 2:15:00 AM

0

Ohad Lutzky wrote:
> The check whether it's "main.rb" or not is so this doesn't happen for
> Rake. Now, it works well, but it's ugly. The reason I don't just go
> ahead and use ':' is that I use glade, as well as some other files which
> I need to be able to find. This is currently in development, so I'd
> prefer to avoid forcing people to install the program in predetermined
> locations (/usr/local/bin, /usr/local/share/my_app_files, et cetera).
>

Have your startup script/s determine the "root" of your application's
directory structure, and use a global to refer to all other resources
using absolute paths from this root path? (Yes, I know globals are evil,
but the current working directory is global state too, so it's at least
not a worse solution.)

Depending on being chdirred into your directory structure or on
predetermined install locations is Bad, smells too much of "I know
what's good for my users better than them" to me.

David Vallner