|
View:
New views
6 Messages
—
Rating Filter:
Alert me
|
|
|
controller filters running twice in 1.1.4?since upgrading to 1.1.4 (I had been running without issue on a git snapshot), I'm noticing that my filter actions initiated from application.rb seem to be running twice. I created a test rails project with the rspec scaffold and am also seeing the same behavior here too.
Adding this code to application.rb: before_filter :foo def foo "foo" end and an example in users_controller_spec.rb: it "should call foo via a before filter" do controller.should_receive(:foo) do_get end results in this: 1) Spec::Mocks::MockExpectationError in 'UsersController handling GET /users.xml should call foo' Mock 'UsersController' expected :foo with (any args) once, but received it twice script/spec:4: Is any one else seeing this? Thanks, Matt |
|
|
Re: controller filters running twice in 1.1.4?On Tue, Jun 3, 2008 at 5:31 PM, Matt McNeil <nabble@...> wrote:
> > since upgrading to 1.1.4 (I had been running without issue on a git > snapshot), I'm noticing that my filter actions initiated from application.rb > seem to be running twice. I created a test rails project with the rspec > scaffold and am also seeing the same behavior here too. > > Adding this code to application.rb: > > before_filter :foo > > def foo > "foo" > end > > and an example in users_controller_spec.rb: > > it "should call foo via a before filter" do > controller.should_receive(:foo) > do_get > end > > results in this: > > 1) > Spec::Mocks::MockExpectationError in 'UsersController handling GET > /users.xml should call foo' > Mock 'UsersController' expected :foo with (any args) once, but received it > twice > script/spec:4: > > Is any one else seeing this? Can you put a print statement inside application.rb to see if the file itself is being loaded multiple times? Pat _______________________________________________ rspec-users mailing list rspec-users@... http://rubyforge.org/mailman/listinfo/rspec-users |
|
|
Re: controller filters running twice in 1.1.4?Hi Pat, Yes, application.rb appears to be getting loaded twice. Things are fine when the before_filter is being called from the UsersController: class UsersController < ApplicationController before_filter :foo puts "#{__FILE__} loaded " + Time.now.to_s /opt/local/bin/ruby -S script/spec -O spec/spec.opts spec/controllers/users_controller_spec.rb /Users/matt/test/app/controllers/users_controller.rb loaded Tue Jun 03 19:20:44 -0700 2008 ................................... Finished in 0.256665 seconds 35 examples, 0 failures however, when that filter macro is moved to application.rb: class ApplicationController < ActionController::Base helper :all # include all helpers, all the time before_filter :foo puts "#{__FILE__} loaded " + Time.now.to_s here's what happens: /opt/local/bin/ruby -S script/spec -O spec/spec.opts spec/controllers/users_routing_spec.rb spec/controllers/users_controller_spec.rb /Users/matt/test/app/controllers/application.rb loaded Tue Jun 03 19:23:32 -0700 2008 /Users/matt/test/app/controllers/application.rb loaded Tue Jun 03 19:23:32 -0700 2008 ..........................................F..... 1) Spec::Mocks::MockExpectationError in 'UsersController handling GET /users.xml should call foo via a before filter' Mock 'UsersController' expected :foo with (any args) once, but received it twice script/spec:4: Finished in 0.2891 seconds 48 examples, 1 failure |
|
|
Re: controller filters running twice in 1.1.4?On Tue, Jun 3, 2008 at 7:27 PM, Matt McNeil <nabble@...> wrote:
> > > Pat Maddox wrote: >> >> On Tue, Jun 3, 2008 at 5:31 PM, Matt McNeil <nabble@...> wrote: >>> >>> since upgrading to 1.1.4 (I had been running without issue on a git >>> snapshot), I'm noticing that my filter actions initiated from >>> application.rb >>> seem to be running twice. I created a test rails project with the rspec >>> scaffold and am also seeing the same behavior here too. >>> >>> Adding this code to application.rb: >>> >>> before_filter :foo >>> >>> def foo >>> "foo" >>> end >>> >>> and an example in users_controller_spec.rb: >>> >>> it "should call foo via a before filter" do >>> controller.should_receive(:foo) >>> do_get >>> end >>> >>> results in this: >>> >>> 1) >>> Spec::Mocks::MockExpectationError in 'UsersController handling GET >>> /users.xml should call foo' >>> Mock 'UsersController' expected :foo with (any args) once, but received >>> it >>> twice >>> script/spec:4: >>> >>> Is any one else seeing this? >> >> Can you put a print statement inside application.rb to see if the file >> itself is being loaded multiple times? >> >> Pat >> _______________________________________________ >> >> > Hi Pat, > > Yes, application.rb appears to be getting loaded twice. Things are fine > when the before_filter is being called from the UsersController: > > class UsersController < ApplicationController > > before_filter :foo > > puts "#{__FILE__} loaded " + Time.now.to_s > > > /opt/local/bin/ruby -S script/spec -O spec/spec.opts > spec/controllers/users_controller_spec.rb > /Users/matt/test/app/controllers/users_controller.rb loaded Tue Jun 03 > 19:20:44 -0700 2008 > ................................... > > Finished in 0.256665 seconds > > 35 examples, 0 failures > > however, when that filter macro is moved to application.rb: > > class ApplicationController < ActionController::Base > helper :all # include all helpers, all the time > > before_filter :foo > > puts "#{__FILE__} loaded " + Time.now.to_s > > here's what happens: > > /opt/local/bin/ruby -S script/spec -O spec/spec.opts > spec/controllers/users_routing_spec.rb > spec/controllers/users_controller_spec.rb > /Users/matt/test/app/controllers/application.rb loaded Tue Jun 03 19:23:32 > -0700 2008 > /Users/matt/test/app/controllers/application.rb loaded Tue Jun 03 19:23:32 > -0700 2008 > ..........................................F..... > > 1) > Spec::Mocks::MockExpectationError in 'UsersController handling GET > /users.xml should call foo via a before filter' > Mock 'UsersController' expected :foo with (any args) once, but received it > twice > script/spec:4: > > Finished in 0.2891 seconds > > 48 examples, 1 failure Do you require application.rb from anywhere, but including the whole path? i.e. require File.join(RAILS_ROOT, "app", "controllers", "application"). If you require the same file twice, but using two different paths, then it'll be loaded twice. This may happen from a plugin you've got loaded as well. Another thing to check is the paths in your generated specs. I changed those a couple weeks ago, but to avoid this type of problem. I may have screwed up, or perhaps you've got a mix of requires from older gen'd specs and newer ones. Pat _______________________________________________ rspec-users mailing list rspec-users@... http://rubyforge.org/mailman/listinfo/rspec-users |
|
|
Re: controller filters running twice in 1.1.4?Application.rb (and the method called by the before filter) only seem to be loaded twice when they're being run with autotest/spec. To reproduce what I'm showing here: $ rails -v Rails 2.1.0 rails test cd test script/plugin install git://github.com/dchelimsky/rspec.git script/plugin install git://github.com/dchelimsky/rspec-rails.git script/generate rspec rsg rspec_scaffold User name:string then add the before_filter :foo to application.rb, the foo method to users_controller.rb, and the example to users_controller_spec.rb. then: $ /opt/local/bin/ruby -S script/spec -O spec/spec.opts spec/controllers/users_controller_spec.rb ..................................F 1) Spec::Mocks::MockExpectationError in 'UsersController handling GET /users should call foo via a before filter' Mock 'UsersController' expected :foo with (any args) once, but received it twice script/spec:4: Finished in 0.252162 seconds 35 examples, 1 failure |
|
|
Re: controller filters running twice in 1.1.4?On Wed, Jun 4, 2008 at 4:29 AM, Pat Maddox <pergesu@...> wrote:
> On Tue, Jun 3, 2008 at 7:27 PM, Matt McNeil <nabble@...> wrote: >> Yes, application.rb appears to be getting loaded twice. Things are fine >> when the before_filter is being called from the UsersController: >> >> class UsersController < ApplicationController >> > Do you require application.rb from anywhere, but including the whole > path? i.e. require File.join(RAILS_ROOT, "app", "controllers", > "application"). If you require the same file twice, but using two > different paths, then it'll be loaded twice. > > This may happen from a plugin you've got loaded as well. > I've been seeing the same problem. In my case the symptom was a warning about redefining a constant I have in ApplicationController. I checked across my application and the only places I see application being required (outside vendor/rails) are script/spec_server (and it's template) and rspec-rails/lib/spec/rails.rb. > Another thing to check is the paths in your generated specs. I > changed those a couple weeks ago, but to avoid this type of problem. > I may have screwed up, or perhaps you've got a mix of requires from > older gen'd specs and newer ones. > I'm not sure what "paths in your generated specs" means to check this myself. Regards, Matt -- Matt Mower :: http://matt.blogs.it/ _______________________________________________ rspec-users mailing list rspec-users@... http://rubyforge.org/mailman/listinfo/rspec-users |
| Free embeddable forum powered by Nabble | Forum Help |