On 14 Feb 2012, at 20:44, Justin Ko wrote: > > On Feb 14, 2012, at 9:23 AM, David Chelimsky wrote: > >> On Tue, Feb 14, 2012 at 9:28 AM, Justin Ko <jko...@gmail.com> wrote: >>> >>> On Feb 13, 2012, at 10:35 PM, David Chelimsky wrote: >>> >>>> On Mon, Feb 13, 2012 at 9:04 PM, Justin Ko <jko...@gmail.com> wrote: >>>>> >>>>> On Feb 13, 2012, at 1:16 PM, Patrick J. Collins wrote: >>>>> >>>>>> Hi, >>>>>> >>>>>> I was writing an integration test for my user signup form (with >>>>>> capybara), and found that my test was failing due to a validation error: >>>>>> "email is already taken". I'm a bit confused because I thought when I >>>>>> run "rspec spec/some_spec.rb", the test database would be wiped clear? >>>>>> >>>>>> Is that not the case? >>>>>> >>>>>> Patrick J. Collins >>>>>> http://collinatorstudios.com >>>>>> >>>>>> _______________________________________________ >>>>>> rspec-users mailing list >>>>>> rspec-users@rubyforge.org >>>>>> http://rubyforge.org/mailman/listinfo/rspec-users >>>>> >>>>> You basically have two options to ensure a clean database: >>>>> >>>>> 1.) Transactional examples: >>>>> >>>>> RSpec.configuration.use_transactional_examples = true >>>>> >>>>> 2.) DatabaseCleaner: >>>>> >>>>> RSpec.configure do |config| >>>>> config.before { DatabaseCleaner.start } >>>>> config.after { DatabaseCleaner.clean } >>>>> end >>>>> >>>>> Look into what those do. Let us know if you get stuck. >>>> >>>> What Justin says is true if you're running in the same process. If >>>> you're using Capybara to run examples in-bro.wser, then option 2 will >>>> work for you, but option 1 will not. >>> >>> You can still do this with an AR patch. Look at the "Transactions and >>> database setup" in the Capybara README. >> >> "This may have thread safety implications and could cause strange >> failures, so use caution with this approach." >> >>> Using DatabaseCleaner with truncation is SLOW. >> >> True, but you can minimize that by using transaction by default, and >> specifying truncation for in-browser scenarios (which are already far >> slower than will be impacted by truncation). > > cucumber-rails has good examples on how to set this up in RSpec: > https://github.com/cucumber/cucumber-rails/blob/master/lib/cucumber/rails/database.rb > > It includes AR shared connection and truncation strategies. > > David, how come rspec-rails doesn't include support for these things as well? > I don't really mind setting it up manually, but it does seem to be a > necessary pattern for request specs.
Probably because it's crazy complicated. If you do want to support it too, let's work out a way to factor it out into a single shared library. FYI the feature for it is here: https://github.com/cucumber/cucumber-rails/blob/master/features/choose_javascript_database_strategy.feature cheers, Matt -- Freelance programmer & coach Author, http://pragprog.com/book/hwcuc/the-cucumber-book Founder, http://www.relishapp.com/ Twitter, https://twitter.com/mattwynne
_______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users