RUBYLIB Environment Path

2019-05-25 21:10发布

So currently I have included the following in my .bashrc file.

export RUBYLIB=/home/git/project/app/helpers

I am trying to run rspec with a spec that has

require 'output_helper'

This file is in the helpers directory. My question is that when I change the export line to:

export RUBYLIB=/home/git/project/

It no longer finds the helper file. I thought that ruby should search the entire path I supply, and not just the outermost directory supplied? Is this the correct way to think about it? And if not, how can I make it so RUBY will search through all subdirectories and their subdirectories, etc?

Thanks,

Robin

2条回答
不美不萌又怎样
2楼-- · 2019-05-25 21:55

As buruzaemon mentions, Ruby does not search subdirectories, so you need to include all the directories you want in your search path. However, what you probably want to do is:

require 'app/helpers/output_helper'

This way you aren't depending on the RUBYLIB environment variable being set a certain way. When you're deploying code to production, or collaborating with others, these little dependencies can make for annoying debugging sessions.

Also as a side note, you can specify . as a search path, rather than using machine-specific absolute paths.

查看更多
贪生不怕死
3楼-- · 2019-05-25 22:09

Similar to PATH, you need to explicitly name the directory under which to look for libraries. However, this will not include any child directories within, so you will need to list any child sub-directories as well, delimiting them with a colon.

For example:

export RUBYLIB=/home/git/project:/home/git/project/app/helpers
查看更多
登录 后发表回答