I am trying to upgrade a Rails 2.2.2 app to Rails3, its a pain
Part of this is I need to upgrade all my Specs to RSpec2, as this info
does not seem to be in any one place, here is a summary of what I
needed to doā¦
-
needed to rename all my views from .haml to .html.haml,
(or .html.erb) although
Rails3 seemed ok with the old naming RSpec2 view specs failed to
find the templates with the old name.
-
rewrite all my view specsā¦
-
change @controller.template.
to view.
-
change have_tag
to have_selector
and change the parameters
- place holders not supported, need to use #{}
- add :content => for any text in second parameter
-
change assign[:blah]= :blod
to assign(:blag, :blod)
-
change the describe ā¦ do to have the path to the view rather
than text description
-
change the render ā/showā to just render or render :file => āfull
template specā
-
change have_text to matches(/ā¦/)
-
change response.should to rendered.shoul
-
modify the controller specs
-
controller_name is no longer supported, so need to nest all my
describes under a top level describe that has the controller
name.
describe āUsersControllerā do
or use subject {SomeController.new} (not tested yet)
-
when using post/delete/put :something, :id => 1 passing in an
integer id used to work, now it needs to
be a string (probably a rails3 thing)
delete :destroy, :id => ā1ā
-
helper specs only needed minor changes
- change have_tag to have_selector
Hi ā Thanks for sharing all your tips. I couldnāt understand your
line about what replaces have_text, however. I donāt see a method
called āmatchesā or āmatchāā¦
I think your list might be the start of an effort by users to document
RSpec2 the hard way, since a lot has changed that the core team has
not documented anywhere. Weāve found that the Rails3 upgrade is some
work, but the advantages over Rails 2 are clear. RSpec2, however, is
so poorly documented, useful features have been removed for no
apparent reason, and any advantages over RSpec1 have not become clear
yet (our test suite runs 3 times slower than it did in RSpec1!).
On Jan 13, 2011, at 12:36 PM, Kurt wrote:
yet (our test suite runs 3 times slower than it did in RSpec1!).
re: speed, you be sure to upgrade to rspec-rails-2.2 (Iād go for the
latest, 2.4.1), which sped things up considerably.
As for docs - official docs are at http://relishapp.com/rspec.
Info about contributing to the docs can be found there and at
http://blog.davidchelimsky.net/2010/12/23/rspec-2-documentation-2/.
Thanks in advance for your help.
Cheers,
David
On Jan 13, 10:36am, Kurt [email protected] wrote:
Hi ā Thanks for sharing all your tips. I couldnāt understand your
line about what replaces have_text, however. I donāt see a method
called āmatchesā or āmatchāā¦
Sorry that should beā¦
response.body.should match(/ā¦/)
it is the standard text regexp match.
also
response.body.should =~ /ā¦/
should work too.
Most of our RSpec2 conversion has been done since version 2.4, so my
report of performance 2-3 times slower than RSpec 1 is based on those
releases.
Iāve started a chart of differences between RSpec 1 and 2 here:
Iāll gladly post any new discoveries anyone want to contribute.
On Feb 1, 2011, at 4:31 PM, Kurt wrote:
Most of our RSpec2 conversion has been done since version 2.4, so my
report of performance 2-3 times slower than RSpec 1 is based on those
releases.
Are you sure thatās all RSpec? rspec-core-2.2 actually runs faster than
rspec-core-1.x, and a lot of the Rails framework changed as well. And
donāt forget bundler. There are a lot of moving parts here, so if you
can isolate the slow down to RSpec, please let us know what you find so
we can address any specific issues.
Thanks!
David
We havenāt had the time to try to isolate the cause of the slowdown, but
whatever the cause, it seems to be widespread as I have seen others
reporting slowdowns of the same magnitude we have experienced. Our
suite of
700 tests used to run in about 1 minute and on the same machine, with
the
minimal implementation and spec changes required to move to the newer
versions, they now take about 3 minutes. What performance differences
have
you seen in the shift from RSpec1/Rails2 to RSpec2/Rails3?
On Feb 1, 2011, at 4:23 PM, Kurt wrote:
Iāve started a chart of differences between RSpec 1 and 2 here:
Schneider Schreibt: RSpec 2 changes from RSpec 1
Iāll gladly post any new discoveries anyone want to contribute.
It would be great if you would contribute these directly to RSpecās docs
so everyone can find them and benefit from them. Take a look at:
http://relishapp.com/rspec/rspec-core/v/2-4/file/upgrade
http://relishapp.com/rspec/rspec-rails/v/2-4/file/upgrade
They are just Markdown files, maintained in the rspec projects:
https://github.com/rspec/rspec-core/blob/master/features/Upgrade.md
https://github.com/rspec/rspec-rails/blob/master/features/Upgrade.md
Just submit pull requests and Iāll be happy to merge them.
Cheers,
David