Requiring "test_notifier/rspec" in spec,opts

There is a nice little gem that gives you desktop notifications of
your spec commands called test_noitifer (fnando (Nando Vieira) · GitHub
test_notifier). I can get it to work by including require
“test_notifier/rspec” toward the top of my spec_helper, or by manually
including it in the command line like:

spec --require “test_notifier/rspec”

However, if I add it to the top of my spec.opts file, I get the
following error:

/usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in
`gem_original_require’: no such file to load – “test_notifier/
rspec” (LoadError)

Any ideas on how to make it work? I don’t want to add it to
spec_helper because then others on my team would need to use the gem
as well (which they might not want to).

On Tue, Mar 2, 2010 at 1:22 PM, drewB [email protected] wrote:

/usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in
`gem_original_require’: no such file to load – “test_notifier/
rspec” (LoadError)

Any ideas on how to make it work? I don’t want to add it to
spec_helper because then others on my team would need to use the gem
as well (which they might not want to).

spec.opts is not a ruby file, so you can’t put it there. Why not add
it to a ruby file in spec/support/ that you don’t keep in source
control?

I may not have been clear. When I said if I add it to the top of my
spec.opts file, I meant adding, ‘–require “test_notifier/rspec”’.

Nevertheless, I tried you suggestion (a very good one).
Unfortunately, it seems that it must be required before “require
File.expand_path(File.join(File.dirname(FILE),’…’,‘config’,‘environment’))”
or the following error appears:

/usr/local/lib/site_ruby/1.8/rubygems.rb:270:in `activate’: You have a
nil object when you didn’t expect it! (NoMethodError)
You might have expected an instance of Array.
The error occurred while evaluating nil.map

If I add to spec.opts ‘–require test_notifier/rspec’ (quotes are
removed) it is finding it but I am encountering the same error as if I
didn’t require the file early enough in spec_helper:

/usr/local/lib/site_ruby/1.8/rubygems.rb:270:in `activate’: You have a
nil object when you didn’t expect it! (NoMethodError)
You might have expected an instance of Array.
The error occurred while evaluating nil.map

No sure they same problem won’t occur when using the option on the
command line.

Thank you. That makes perfect sense.

Just in case anyone else comes across this, for me to include spec/
before_rails_loads/test_notifer.rb I needed to remove the underscore
so:

Dir[‘spec/before_rails_loads/*.rb’].each {|f| require f}

On Tue, Mar 2, 2010 at 3:13 PM, drewB [email protected] wrote:

You might have expected an instance of Array.
The error occurred while evaluating nil.map

If you know where it works in the spec_helper file, then you can do
what I suggested before, but in a new directory. So right now in
spec_helper you’ve got something like:

Dir[‘spec/support/*_.rb’].each {|f| require f}

Do the same thing, but put your helpers in a separate directory, and
include that before the line that requires ‘config/environment’

Dir[‘spec/before_rails_loads/*_.rb’].each {|f| require f}
require
File.expand_path(File.join(File.dirname(FILE),‘…’,‘config’,‘environment’))

HTH,
David