[Chirb] tools, already in play and coming soon
Ryan Platte
ryan at platte.name
Thu Jun 12 21:29:54 EDT 2008
Go for it, Jake. I'm interested to see what you'll write.
On Thu, Jun 12, 2008 at 7:23 PM, Jake Scruggs <jake.scruggs at gmail.com>
wrote:
> I haven't had any problems with NullDB, but failing silently is its thing
> (Null Object Pattern and all) so be careful. I think the tagging bit you
> describe as coming soon to RSpec is pretty cool.
>
> I'm probably going to blog about this soon and will quote some things from
> Ryan and David's responses -- unless of course either of you object.
> -Jake
>
>
> On Wed, Jun 11, 2008 at 10:08 AM, David Chelimsky <dchelimsky at gmail.com>
> wrote:
>
>> Hey Jake - thanks for sharing this. Couple o' comments below:
>> On Jun 11, 2008, at 9:26 AM, Jake Scruggs wrote:
>>
>> I've been using the NullDb (http://agilewebdevelopment.com/plugins/nulldb)
>> plugin to disconnect RSpec from the database.
>>
>>
>> The only drawback I've heard about NullDb is that it fails silently in
>> certain cases - has led to some painful debugging. Have you had that
>> experience?
>>
>> I don't like the global disconnect (for all specs everywhere) that the web
>> page suggests, so I set up this in my spec_helper:
>>
>> describe "Unit Spec", :shared => true do
>> before :all do
>> ActiveRecord::Base.establish_connection(:adapter => :nulldb)
>> end
>>
>> after :all do
>> ActiveRecord::Base.establish_connection(:test)
>> end
>> end
>>
>> and then say this inside any describe block I want to disconnect from the
>> db:
>>
>> require File.dirname(__FILE__) + "/../spec_helper"
>>
>> describe User do
>> it_should_behave_like "Unit Spec"
>>
>>
>> This is cool that it works, but using it_should_behave_like feels odd to
>> me in this case. The User should not behave like a Unit Spec, the examples
>> should be disconnected.
>>
>> You can do this instead if you like:
>>
>> share_as :Disconnected do
>> before :all do
>> ActiveRecord::Base.establish_connection(:adapter => :nulldb)
>> end
>>
>> after :all do
>> ActiveRecord::Base.establish_connection(:test)
>> end
>> end
>>
>> describe User do
>> include Disconnected
>> ...
>>
>> Right now we don't have an arbitrary tagging mechanism but it's something
>> we've talked about. This gives me an idea that I'd like to implement, and
>> everything is pretty much in place to support this, where the options hash
>> is available to you in the before and after blocks, so you could do this
>> (CAREFUL - THIS DOES NOT WORK TODAY):
>>
>> Spec::Runner.configure do |config|
>> config.before(:all)
>> if example_group_options[:disconnected]
>> ActiveRecord::Base.establish_connection(:adapter => :nulldb)
>> end
>> end
>> config.after(:all)
>> if example_group_options[:disconnected]
>> ActiveRecord::Base.establish_connection(:test)
>> end
>> end
>> end
>>
>> Then you'd be able to say:
>>
>> describe User, :disconnected => true do
>> ...
>>
>> WDYT about that?
>>
>> Cheers,
>> David
>>
>>
>>
>>
>> .
>> .
>> .
>>
>> using nested describes to separate my unit (don't hit the db) from my
>> functional (do hit the db) specs
>>
>> -Jake
>>
>> On Wed, Jun 11, 2008 at 8:37 AM, Ryan Platte <ryan at platte.name> wrote:
>>
>>> Here are some Rake tasks I created to use RSpec with UnitRecord. I set
>>> the default task to first run spec:fast, then spec:slow, so if the fast ones
>>> fail we don't have to wait on the slow ones to set up and run.
>>>
>>> The fly in the ointment is that schema.rb has to be current.
>>>
>>> namespace :spec do
>>>
>>> desc "Run all fast specs in spec directory (excluding plugin specs)"
>>> Spec::Rake::SpecTask.new(:fast) do |t|
>>> t.spec_opts = ['--options', "\"#{RAILS_ROOT}/spec/spec.opts\""]
>>> t.spec_files = FileList['spec/**/*_fast_spec.rb']
>>> #t.ruby_opts = ['-r spec/spec_helper', '-rubygems', '-runit_record',
>>> "-e 'ActiveRecord::Base.disconnect!'"]
>>> end
>>>
>>> desc "Run all non-fast specs in spec directory (excluding plugin
>>> specs)"
>>> Spec::Rake::SpecTask.new(:slow => spec_prereq) do |t|
>>> t.spec_opts = ['--options', "\"#{RAILS_ROOT}/spec/spec.opts\""]
>>> t.spec_files =
>>> FileList['spec/**/*_spec.rb'].exclude('spec/**/*_fast_spec.rb')
>>> end
>>>
>>> end
>>>
>>>
>>> On Wed, Jun 11, 2008 at 1:36 AM, David Chelimsky <dchelimsky at gmail.com>
>>> wrote:
>>>
>>>> On Jun 9, 2008, at 11:31 PM, David Chelimsky wrote:
>>>>
>>>> Hey Chirb,
>>>>>
>>>>> Lastly, I may have mis-spoke about rails loading up columns from
>>>>> schema.rb - I'm looking into it and will follow up when I learn the truth.
>>>>> So Ryan - keep using unit-record for now :)
>>>>>
>>>>
>>>> I definitely mis-spoke. I don't know where I got that in my head, but it
>>>> seems I did.
>>>>
>>>> I don't recall who said it, but unit_record does the column caching I
>>>> thought rails did. So now it's off to figure out how to get rspec to play
>>>> nice w/ unit_record.
>>>>
>>>> More soon.
>>>>
>>>>
>>>> Cheers,
>>>> David
>>>> _______________________________________________
>>>> ChicagoGroup-Members-List at rubyforge.org
>>>> http://rubyforge.org/mailman/listinfo/chicagogroup-members-list
>>>>
>>>
>>>
>>>
>>> --
>>> Ryan Platte
>>> _______________________________________________
>>> ChicagoGroup-Members-List at rubyforge.org
>>> http://rubyforge.org/mailman/listinfo/chicagogroup-members-list
>>>
>>
>> _______________________________________________
>> ChicagoGroup-Members-List at rubyforge.org
>> http://rubyforge.org/mailman/listinfo/chicagogroup-members-list
>>
>>
>>
>> _______________________________________________
>> ChicagoGroup-Members-List at rubyforge.org
>> http://rubyforge.org/mailman/listinfo/chicagogroup-members-list
>>
>
>
> _______________________________________________
> ChicagoGroup-Members-List at rubyforge.org
> http://rubyforge.org/mailman/listinfo/chicagogroup-members-list
>
--
Ryan Platte
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://rubyforge.org/pipermail/chicagogroup-members-list/attachments/20080612/4c13e906/attachment-0001.html>
More information about the ChicagoGroup-Members-List
mailing list