Help with relative paths using require

Hi,

I’m having a lot of problems trying to “require” my own .rb files from
a lib folder in my project.

My structure is simple enough.

app
app\lib
app\feature
app\feature2

I have all shared code in \lib and in any feature code I do a require
‘…\lib\whatever.rb’

It runs fine locally but if I run on a server using Cron or a Daemon
the base path seems to be always set to something else so …\lib
doesn’t exist. My server and my dev. environments are very different
so it means hacking server deployments to find library files.

What is the correct method here? To wrap my lib code in a gem?

thanks!
-c

Hi –

On Sun, 19 Jul 2009, typemismatch wrote:

app\feature2

I have all shared code in \lib and in any feature code I do a require
‘…\lib\whatever.rb’

It runs fine locally but if I run on a server using Cron or a Daemon
the base path seems to be always set to something else so …\lib
doesn’t exist. My server and my dev. environments are very different
so it means hacking server deployments to find library files.

What is the correct method here? To wrap my lib code in a gem?

Does Tony A.'s require_rel (part of require_all) help?
http://github.com/tarcieri/require_all/tree/master

David

Thanks David, the require_all was perfect! and easier than me
packaging gems :slight_smile:

-c

On Sunday 19 July 2009 09:13:37 am typemismatch wrote:

My structure is simple enough.

app
app\lib
app\feature
app\feature2

I have all shared code in \lib and in any feature code I do a require
‘…\lib\whatever.rb’

Quick question: Where are you actually running the app from? I’m
guessing that
path isn’t relative to the file the ‘require’ statement is in, but
rather, from
the current working directory.

It runs fine locally but if I run on a server using Cron or a Daemon
the base path seems to be always set to something else so …\lib
doesn’t exist.

Among other things, I’m guessing you’ll find the working directory is
somewhere
else. But you could play with $: a bit.

What is the correct method here? To wrap my lib code in a gem?

That’s a good idea anyway, but you could also do something like this:

require ‘pathname’
$: << Pathname(FILE).parent.join(‘lib’).to_s

Now, you could just do:

require ‘whatever’

The .rb is implied, and the path includes ‘lib’ directly, now. You’d get
something similar if you packaged it as a gem.

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