Upgrading to RSpec 1.0.0 on Mac OS X TigerEdit
These notes were made while upgrading from RSpec 0.9.4 to RSpec 1.0.0 on Mac OS X Tiger.
This release was actually quite unexpected (I was under the impression that the RSpec team didn’t plan on hitting 1.0 anytime soon) but it is an extremely important release because it marks a commitment to freezing the API and not making any compatibility-breaking changes.
I will use the same installation procedure that I employed when upgrading to RSpec 0.9.4.
Pre-testing
First double check that all specs are passing for Walrus. This is a good check because there are a lot of specifications, many of them containing numerous assertions:
# from the top-level directory of the Walrus source tree:
rake spec
Download and install
sudo gem install rspec
Output
sudo gem install rspec
Successfully installed rspec-1.0.0
Installing ri documentation for rspec-1.0.0...
Installing RDoc documentation for rspec-1.0.0...
Update FastRI index
fastri-server -b
Output
fastri-server -b
Indexing RI docs for ParseTree version 1.7.0.
Indexing RI docs for RubyInline version 3.6.3.
Indexing RI docs for ZenTest version 3.5.2.
Indexing RI docs for actionmailer version 1.3.3.
Indexing RI docs for actionpack version 1.13.3.
Indexing RI docs for actionwebservice version 1.2.3.
Indexing RI docs for activerecord version 1.15.3.
Indexing RI docs for activesupport version 1.4.2.
Indexing RI docs for dhaka version 2.1.0.
Indexing RI docs for diff-lcs version 1.1.2.
Indexing RI docs for fastri version 0.3.0.1.
Indexing RI docs for heckle version 1.4.0.
Indexing RI docs for hoe version 1.2.0.
Indexing RI docs for model_security_generator version 0.0.9.
Indexing RI docs for rake version 0.7.3.
Indexing RI docs for rcodetools version 0.5.0.0.
Indexing RI docs for rcov version 0.8.0.2.
Indexing RI docs for rspec version 1.0.0.
Indexing RI docs for ruby-debug version 0.9.3.
Indexing RI docs for ruby-debug-base version 0.9.3.
Indexing RI docs for ruby-prof version 0.4.1.
Indexing RI docs for ruby2ruby version 1.1.5.
Indexing RI docs for rubyforge version 0.4.1.
Indexing RI docs for rubygems version 0.9.2.
Indexing RI docs for spec_ui version 0.2.0.
Indexing RI docs for sqlite3-ruby version 1.2.1.
Indexing RI docs for walrus version 0.1.
Indexing RI docs for zentest version 3.5.0.
Building index.
Indexed:
* 12483 methods
* 2452 classes/modules
Needed 2.650911 seconds
Post-testing
# run the specs again
rake spec
TextMate
cd ~/Library/Application\ Support/TextMate/Bundles/RSpec.tmbundle
svn up
Output
U Commands/Run Focussed Specification.tmCommand
U Support/lib/spec_mate.rb
A Support/spec/spec_helper.rb
U Support/spec/spec_mate_spec.rb
D Support/spec/vendor
A Support/spec/vendor
A Support/spec/vendor/plugins
A Support/spec/vendor/plugins/rspec
A Support/spec/vendor/plugins/rspec/lib
Updated to revision 1987.
After updating
# run the specs again
rake spec
cd ~/Library/Application\ Support/TextMate/Bundles/RSpec.tmbundle
svn up
Output
U Commands/Run Focussed Specification.tmCommand
U Support/lib/spec_mate.rb
A Support/spec/spec_helper.rb
U Support/spec/spec_mate_spec.rb
D Support/spec/vendor
A Support/spec/vendor
A Support/spec/vendor/plugins
A Support/spec/vendor/plugins/rspec
A Support/spec/vendor/plugins/rspec/lib
Updated to revision 1987.
If TextMate is running, from the TextMate "Bundles" menu, open the "Bundle Editor" submenu and select "Reload Bundles".
Rails
I have a Rails project where rspec is installed as a plug-in. The --force
switch is necessary in order to install over the previously installed copy:
# from inside the Rails application top-level directory
script/plugin install --force svn://rubyforge.org/var/svn/rspec/tags/REL_1_0_0/rspec
script/plugin install --force svn://rubyforge.org/var/svn/rspec/tags/REL_1_0_0/rspec_on_rails
See if any other changes are necessary:
script/generate rspec --pretend
Output
exists spec
identical spec/spec_helper.rb
identical spec/spec.opts
identical previous_failures.txt
identical script/spec_server
identical script/spec
Spec::UI
exists spec
identical spec/spec_helper.rb
identical spec/spec.opts
identical previous_failures.txt
identical script/spec_server
identical script/spec
At this point I decided to see if I could install Spec::UI as a plug-in as well, so as to keep all the important dependencies bundled with the Rails application itself.
script/plugin install svn://rubyforge.org/var/svn/rspec/tags/REL_1_0_0/spec_ui
Official word is that for this to actually work it "would need some minor changes in order to work smoothly". So I decided to remove it until those changes have been made:
# direct filesystem manipulation
rm -r vendor/plugins/spec_ui
# or using SVK
svk rm vendor/plugins/spec_ui