Looks like you can run rspec w/out hitting the database by doing the
following:
1. Setting up a new rake task which does not have db:test:prepare as
a dependency:
namespace :spec do
desc "Run the specs under spec/models without a database"
Spec::Rake::SpecTask.new(:models_no_db) do |t|
t.spec_opts = [''--options'',
"\"#{RAILS_ROOT}/spec/spec.opts\""]
t.spec_files = FileList[''spec/models/**/*_spec.rb'']
end
end
2. Calling an error on access the database with a new helper:
ENV["RAILS_ENV"] = "test"
require File.expand_path(File.dirname(__FILE__) + "/../config/
environment")
require ''spec/rails''
# Even if you''re using RSpec, RSpec on Rails is reusing some of the
# Rails-specific extensions for fixtures and stubbed requests, response
# and other things (via RSpec''s inherit mechanism). These extensions
are
# tightly coupled to Test::Unit in Rails, which is why you''re seeing
it here.
module Spec
module Rails
class ActiveRecord::Base
def self.connection
raise InvalidActionError, "You cannot access the database",
caller
end
end
end
end
class InvalidActionError < StandardError
end
The test database must still be set up in config/database.yml, and I
believe it must also exist
Should I also post this to the rspec rubyforge site?
Best,
Scott