[rspec-users] Rake tasks getting in the way of edge (uses gem instead)

Pat Maddox pergesu at gmail.com
Tue Sep 4 17:12:23 EDT 2007


On 9/4/07, David Chelimsky <dchelimsky at gmail.com> wrote:
> On 9/4/07, Pat Maddox <pergesu at gmail.com> wrote:
> > On 9/4/07, David Chelimsky <dchelimsky at gmail.com> wrote:
> > > On 9/4/07, Pat Maddox <pergesu at gmail.com> wrote:
> > > > So I'd been running gem releases of rspec for the past several months,
> > > > and I installed edge rspec so that I can use Story Runner.
> > > >
> > > > I'm running into a problem because I've got a couple rake tasks that
> > > > reference "spec/rake/raketask".  If I try to run "rake spec" then it
> > > > pulls in the gem version instead of the plugin version.  rake blows up
> > > > saying that the versions are incompatible...RSpec is at 1.0.8 and
> > > > rspec_on_rails is at r2507.
> > > >
> > > > If I remove those rake tasks then it runs fine.  So it just seems that
> > > > when rake starts up, it loads all the available task files, which
> > > > includes a reference to require rspec stuff.  Since the plugins
> > > > haven't been loaded yet it gets the gem version.
> > > >
> > > > afaik the solution is to build a new gem.  However I don't want to
> > > > have to tell my team members to update their gem every single day.
> > > > Also I think including rspec in vendor/plugins is supposed to obviate
> > > > that anyway, but this is probably just some path loading stuff.
> > > >
> > > > Anyone else run into this?  How do you handle it?
> > >
> > > See http://rspec.rubyforge.org/documentation/rails/install.html
> >
> > I managed to fix it by changing the require to use the full path to the plugin:
> >
> > require "vendor/plugins/rspec/lib/spec/rake/spectask"
>
> Ah - so you already had rspec installed as a plugin also? I didn't
> understand that part (clearly).
>
> Where is that require? I'll updated it in the plugin.

The require isn't part of the rspec code...one of the guys I work with
wrote the following rake task:

require "rake"
require "spec/rake/spectask"

desc "Run all specs and dump to html"
Spec::Rake::SpecTask.new('spec:html') do |t|
  t.spec_opts = ["--format", "html"]
  if ARGV.size > 1
    t.out = ARGV[-1]
  else	
    t.out = 'test.html'
  end
  t.fail_on_error = false
end

There might be another way to generate the HTML output with rake
automatically, I'm not sure...

Anyway I'm assuming it loads the gem version because the plugins
haven't been loaded yet and the rspec plugin isn't yet part of the
classpath.

Does that make sense?

Pat


More information about the rspec-users mailing list