Speed Up rake?

Testing with rake is REALLY time consuming! Every time I have to run a
test, it eat up something like 4 to 6 seconds, only for start up O_O

There’s nothing we can do to speed up? Perhaps something like spork?

Use either spark or parallel_tests

Dheeraj K.

Hello Salvatore,

I think using things like spork or the like is just a band-aid and
they are not a solution to the real problem which is the design and
mixing things all together in rails provided and known things,
specially controllers and models. If we have good design with Single
Responsibility Principle and Separation of Concerns we can have
incredibly fast tests with focused pieces in our design. And we only
need rake or those stuff for running our rails-specific tests (like
controller tests, model tests, etc.) and those tests wont need to be
run as frequently as domain-logic tests. domain-logic tests should be
run so frequently during the red-green-refactor cycle all the time
and we should benefit from the quick feedback and other things which
are provided by having fast tests.

I recommend you to watch this interesting talk by Corey H. →
http://arrrrcamp.be/videos/2011/corey-haines---fast-rails-tests/ it’ll
be great explanation of the things I’ve just mentioned with perfect
details and examples.

Hope that helps.
Best Regards


Sam Serpoosh
Software Developer: http://masihjesus.wordpress.com
Twitter @masihjesus

On Tuesday, 31 July 2012 17:57:59 UTC-4, @masihjesus wrote:

Hello Salvatore,

I think using things like spork or the like is just a band-aid and
they are not a solution to the real problem which is the design and
mixing things all together in rails provided and known things,
specially controllers and models. If we have good design with Single
Responsibility Principle and Separation of Concerns we can have
incredibly fast tests with focused pieces in our design.

Oh just stop it. Bending your app into a pretzel to get faster tests is
the
“band-aid”. Tools like Spork address a single issue - “environment
reloading is expensive” - with a simple solution, not reloading when it
isn’t needed. That’s far more useful, especially if you’re a developer
on
an existing app and don’t have the luxury of rewriting everything into
Object-Oriented Nirvana.

–Matt J.

Oh just stop it. Bending your app into a pretzel to get faster tests is
the “band-aid”.

Really? it’s not about bending app into pretzel, it’s about designing
the
app in a way that each part has only one reason to change. and not
making
things depend on stuff
that they don’t have anything to do with them. I think shoving lots of
things into models and controllers is not a good idea and we’ll end up
with
God classes and modules which
will change for lots of different reasons.

BTW it’s not for getting fast tests. in TDD when it’s hard to write
tests
or the tests are slow when they should not (when they don’t need rails
for
instance) they’re shouting
about the problems in the design it’s like an alarm. And we should pay
attention to this quick feedback and do something about it otherwise
it’ll
get worse and worse.

Tools like Spork address a single issue - “environment reloading is
expensive” - with a simple solution, not reloading when it isn’t needed.
That’s far more useful, especially if you’re a developer on an existing
app and don’t have the luxury of rewriting everything into Object-Oriented
Nirvana.

I completely agree with you that not loading things when they are not
needed is a great solution. and if you think about it this whole design
idea for putting things where they belong
and not in models and controllers is doing this too. You’re not
depending a
logic to ActiveRecord or ApplicationController ergo, you’re not loading
things that you don’t need at the moment
and you don’t depend upon things that you don’t have too. Of course
doing
this is harder in an existing application but trying to improve the
design
toward this style in small steps and using
the existing SLOW tests to make sure we’re not breaking things is a good
thing to do. Until we end up with a great design with extracted
domain-logic modules in their own place and having incredibly
fast isolated tests for them. (That’s my idea and probably I’m wrong
though
;):D)

Good Luck :wink:
Best Regards


Sam Serpoosh
Software Developer: http://masihjesus.wordpress.com
Twitter @masihjesus

I agree with doing fast, isolated test and follow the single
responsibility principle, however my problem with rake & rails is not
the execution time of tests, but the start up of rake instead.
I’m trying to use Test Driven Design, so I run test a lot and it’s a
pain if every time I lost 6+ seconds for ONLY rake test start up;
inadmissible.
I think culprit is not rake itself, but start up of rails’ environment.
Now, I’ve found the spork-testunit gem, not user-friendly as “rake
test”, but a lot more faster and test execute in a blink of eyes: 0.5
sec VS 7 sec.
For me, that’s the solution.