Francois Beausoleil
2007-Jan-22 16:25 UTC
[rspec-users] Observed models cause failures with DRBSpec ?
Hi all ! I don''t believe I am the only one using model observers, right ? Well, here''s a nice one: $ drbspec spec . Finished in 0.125322 seconds 1 specification, 0 failures $ drbspec spec F 1) ''A user with an inactive and an active project should be able to return active projects only'' FAILED [] should == [#<Spec::Mocks::Mock:0xb75590bc @name="active", @options={}>] ./spec/models/user_spec.rb:11: script/rails_spec_server:17:in `run'' script/rails_spec_server:38: Finished in 0.024455 seconds 1 specification, 1 failure # spec/models/user_spec.rb require File.dirname(__FILE__) + "/../spec_helper" context "A user with an inactive and an active project" do setup do @user = User.new end specify "should be able to return active projects only" do @active = mock("active") Project.stub!(:active).and_return([@active]) @user.active_projects.should == [@active] end end # app/models/user.rb class User < ActiveRecord::Base has_many :projects, :foreign_key => "owner_id", :order => "projects.title" def active_projects(force=false) @active_projects = nil if force @active_projects ||= self.projects.active end end The observer is loaded in config/environment.rb like this: Rails::Initializer.run do |config| config.active_record.observers = :user_observer end There''s nothing very interesting about this, except that if I comment the user observer in the configuration, I can run drbspec spec multiple times in a row without failures. If I add the observer, I can run drbspec without failures once, then I get failures like the one above for ever after. Can anyone confirm / deny this behavior ? Thanks ! -- Fran?ois Beausoleil http://blog.teksol.info/ http://piston.rubyforge.org/
aslak hellesoy
2007-Jan-22 16:45 UTC
[rspec-users] Observed models cause failures with DRBSpec ?
On 1/22/07, Francois Beausoleil <francois.beausoleil at gmail.com> wrote:> Hi all ! > > I don''t believe I am the only one using model observers, right ? > Well, here''s a nice one: > > $ drbspec spec > > . > > Finished in 0.125322 seconds > > 1 specification, 0 failures > $ drbspec spec > > F > > 1) > ''A user with an inactive and an active project should be able to > return active projects only'' FAILED > [] should == [#<Spec::Mocks::Mock:0xb75590bc @name="active", @options={}>] > ./spec/models/user_spec.rb:11: > script/rails_spec_server:17:in `run'' > script/rails_spec_server:38: > > Finished in 0.024455 seconds > > 1 specification, 1 failure > > > > # spec/models/user_spec.rb > require File.dirname(__FILE__) + "/../spec_helper" > > context "A user with an inactive and an active project" do > setup do > @user = User.new > end > > specify "should be able to return active projects only" do > @active = mock("active") > Project.stub!(:active).and_return([@active]) > @user.active_projects.should == [@active] > end > end > > > # app/models/user.rb > class User < ActiveRecord::Base > has_many :projects, :foreign_key => "owner_id", :order => "projects.title" > > def active_projects(force=false) > @active_projects = nil if force > @active_projects ||= self.projects.active > end > end > > The observer is loaded in config/environment.rb like this: > Rails::Initializer.run do |config| > config.active_record.observers = :user_observer > end > > There''s nothing very interesting about this, except that if I comment > the user observer in the configuration, I can run drbspec spec > multiple times in a row without failures. If I add the observer, I > can run drbspec without failures once, then I get failures like the > one above for ever after. > > Can anyone confirm / deny this behavior ? >I haven''t tried to reproduce this, but it sounds like rails_spec_server is not reinitialising the rails environment properly. Essentially, we''re trying to make rails_spec_server behave the same way as Rails in development mode - reload everything on each HTTP request. Take a peek inside rails_spec_server - perhaps we''re not doing this correctly? If it works with Rails in development mode (can you check that please), it should work with rails_spec_server too. If you can confirm that reloading happens ok in dev mode (hitting with your browser), but not with rails_spec_server, then please submit a bug report, along with useful versions/revision numbers etc. By the way, drbspec will be replaced with spec --drb in the next RSpec release. Not much help, but maybe a nudge in the right direction for more debugging. Aslak> Thanks ! > -- > Fran?ois Beausoleil > http://blog.teksol.info/ > http://piston.rubyforge.org/ > _______________________________________________ > rspec-users mailing list > rspec-users at rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-users