[rspec-users] 'require'ing files from other directories
Matt Wynne
matt at mattwynne.net
Fri Jan 21 16:15:12 EST 2011
On 21 Jan 2011, at 16:22, Brian Warner wrote:
> Matt Wynne wrote in post #976412:
>> On 20 Jan 2011, at 19:32, Brian Warner wrote:
>>
>>> I have a file in step_definitions that's giving me an error for an
>>> uninitialized constant. My guess is I need to 'require' the file where
>>> that class is defined. Said files is located in /lib/codebreaker.
>>>
>>> I am very new to Ruby so this is probably a really simple question but
>>> how do I 'require' a file in codebreaker from a file inside
>>> step_definitions?
>>
>> You could try asking on the RSpec Book's own forum:
>> http://forums.pragprog.com/forums/95
>>
>> This question is really more Cucumber related so you could also ask on
>> the cukes google group.
>>
>> Your guess is right. The best place to put your require statement is in
>> features/support/env.rb
>>
>> I'm surprised that the book doesn't tell you to do that - did you maybe
>> miss a step?
>>
>> cheers,
>> Matt
>>
>> matt at mattwynne.net
>> 07974 430184
>
> The require statement that the book says to put in env.rb is:
>
> $: << File.join(File.dirname(__FILE__), "/../lib/")
> require 'codebreaker'
>
> I ended up getting it to work after a co-worker pointed out that I need
> to add "./lib" to some thing in ruby's list of directories to look in. I
> don't remember what terminology he used but he did it through the
> terminal.
He probably called it the 'load path'. That's what the $: means in that snippet - it's an Array of paths where Ruby will search for files when you call require. In the code above, you're pushing the lib directory onto the load path.
> The require statement I ended up using is
>
> require 'codebreaker/game'
Maybe the lib/codebreaker file was supposed to do that?
cheers,
Matt
matt at mattwynne.net
07974 430184
More information about the rspec-users
mailing list