From: Intransition on
As I continue to work project development tools I repeatedly run into
the case of needing a reliable way to identify the project's root
directory, i.e. to ascend up the directories until it is found.

So far the best idea of come up with is to look for .git/, .hg/ or as
a fallback, README*.

Have any ideas for more reliable means?

From: Jeremy Hinegardner on
On Thu, Jun 24, 2010 at 03:43:09AM +0900, Intransition wrote:
> As I continue to work project development tools I repeatedly run into
> the case of needing a reliable way to identify the project's root
> directory, i.e. to ascend up the directories until it is found.
>
> So far the best idea of come up with is to look for .git/, .hg/ or as
> a fallback, README*.
>
> Have any ideas for more reliable means?

I use the parent directory of the lib/ directory as project root.

-jeremy

--
========================================================================
Jeremy Hinegardner jeremy(a)hinegardner.org


From: Tony Arcieri on
[Note: parts of this message were removed to make it a legal post.]

On Wed, Jun 23, 2010 at 12:43 PM, Intransition <transfire(a)gmail.com> wrote:

> As I continue to work project development tools I repeatedly run into
> the case of needing a reliable way to identify the project's root
> directory, i.e. to ascend up the directories until it is found.
>
> So far the best idea of come up with is to look for .git/, .hg/ or as
> a fallback, README*.


In cases where I actually need this, I usually have a "root" method defined
on the class/module that represents the project. This is usually calculated
from __FILE__ based off the file where the "root" method is defined. I
prefer to have this be the only usage of __FILE__ in the entire project, if
possible.

--
Tony Arcieri
Medioh! A Kudelski Brand

From: Intransition on


On Jun 23, 6:43 pm, Jeremy Hinegardner <jer...(a)hinegardner.org> wrote:
> On Thu, Jun 24, 2010 at 03:43:09AM +0900, Intransition wrote:
> > As I continue to work  project development tools I repeatedly run into
> > the case of needing a reliable way to identify the project's root
> > directory, i.e. to ascend up the directories until it is found.
>
> > So far the best idea of come up with is to look for .git/, .hg/ or as
> > a fallback, README*.
>
> > Have any ideas for more reliable means?
>
> I use the parent directory of the lib/ directory as project root.

Thanks Jeremy. I'm using lib/ as the fallback in place of README*.

I also added a .root/ check to .git and .hg, so if all else fails
people can add that to their project.


From: Intransition on


On Jun 23, 7:02 pm, Tony Arcieri <tony.arci...(a)medioh.com> wrote:
> In cases where I actually need this, I usually have a "root" method defined
> on the class/module that represents the project.  This is usually calculated
> from __FILE__ based off the file where the "root" method is defined.  I
> prefer to have this be the only usage of __FILE__ in the entire project, if
> possible.

I need to find the root external to the project itself. In fact I
would be very weary of ever looking up a project's root from within
the project's code. Different install setups will not necessarily keep
a project intact.