dblock
2011-Apr-15 16:02 UTC
[rspec-users] warning: toplevel constant XYZ referenced Admin:XYZ
I have an odd problem. I got controllers in a namespace and controllers outside of the namespace. For example, I have a PagesController and a Admin::PagesController. When I run rspec from the top, tests pass and I get the following warning: spec/controllers/admin/pages_controller_spec.rb:4: warning: toplevel constant PagesController referenced by Admin::PagesController This makes no sense. I do have a PagesController and an Admin::PagesController and specs for both that are declared properly. I get this for 3 out of about 20 controllers. Any ideas?
David Chelimsky
2011-Apr-15 21:57 UTC
[rspec-users] warning: toplevel constant XYZ referenced Admin:XYZ
On Apr 15, 2011, at 11:02 AM, dblock wrote:> I have an odd problem. I got controllers in a namespace and > controllers outside of the namespace. For example, I have a > PagesController and a Admin::PagesController. > > When I run rspec from the top, tests pass and I get the following > warning: > > spec/controllers/admin/pages_controller_spec.rb:4: warning: toplevel > constant PagesController referenced by Admin::PagesController > > This makes no sense. I do have a PagesController and an > Admin::PagesController and specs for both that are declared properly. > > I get this for 3 out of about 20 controllers. > > Any ideas?Can you post the top 4 lines of pages_controller_spec?
Mike Mazur
2011-Apr-15 23:46 UTC
[rspec-users] warning: toplevel constant XYZ referenced Admin:XYZ
Hi, On Sat, Apr 16, 2011 at 00:02, dblock <dblockdotorg at gmail.com> wrote:> I have an odd problem. I got controllers in a namespace and > controllers outside of the namespace. For example, I have a > PagesController and a Admin::PagesController. > > When I run rspec from the top, tests pass and I get the following > warning: > > spec/controllers/admin/pages_controller_spec.rb:4: warning: toplevel > constant PagesController referenced by Admin::PagesController > > This makes no sense. I do have a PagesController and an > Admin::PagesController and specs for both that are declared properly.I would guess it''s Ruby trying to warn you that the use of the constant PagesController in Admin::PagesController references the top-level PagesController, not Admin::PagesController. It can''t know which one you mean. To make the warning go away, you can use ::PagesController where you mean the top-level PagesController. HTH, Mike
dblock
2011-Apr-17 18:18 UTC
[rspec-users] warning: toplevel constant XYZ referenced Admin:XYZ
None of this makes any sense :) dblock at dblock-magenta:~/source/Gravity/dblock$ find . -name "*.rb" | xargs grep PagesController ./spec/controllers/admin/pages_controller_spec.rb:describe Admin::PagesController do ./spec/controllers/pages_controller_spec.rb:describe PagesController do ./app/controllers/admin/pages_controller.rb:class Admin::PagesController < AdminController ./app/controllers/pages_controller.rb:class PagesController < ApplicationController Now, lets compare with a controller that doesn''t yield the same issue. dblock at dblock-magenta:~/source/Gravity/dblock$ find . -name "*.rb" | xargs grep ArtworksController ./spec/controllers/admin/artworks_controller_spec.rb:describe Admin::ArtworksController do ./spec/controllers/artworks_controller_spec.rb:describe ArtworksController do ./app/controllers/admin/artworks_controller.rb:class Admin::ArtworksController < AdminController ./app/controllers/artworks_controller.rb:class ArtworksController < ApplicationController These are identical, unless I''m blind :) The only thing different is timestamps - it looks like in the case where things work the Admin spec is loaded after the non-admin spec.
dblock
2011-Apr-17 18:24 UTC
[rspec-users] warning: toplevel constant XYZ referenced Admin:XYZ
> To make the warning go away, you can use ::PagesController where you > mean the top-level PagesController.I tried saying ::PagesController in the 2 places it''s declared (the controller itself and the spec), no difference.
dblock
2011-Apr-17 18:44 UTC
[rspec-users] warning: toplevel constant XYZ referenced Admin:XYZ
Top 4 lines of pages_controller_spec. require ''spec_helper'' require ''spec_controllers_helper'' describe PagesController do before(:each) do controller.stub!(:app_initialization).and_return(true) end Top 4 lines of admin/pages_controller_spec. require ''spec_helper'' require ''spec_controllers_helper'' describe Admin::PagesController do include Devise::TestHelpers before(:each) do controller.stub!(:app_initialization).and_return(true) log_in_test_user(Admin) end (changing PagesController to ::PagesController does nothing)
Daniel D.
2012-Jan-08 00:13 UTC
[rspec-users] warning: toplevel constant XYZ referenced Admin:XYZ
Someone made some sense out of this. http://code.dblock.org/warning-toplevel-constant-xyz-referenced-adminxyz -- Posted via http://www.ruby-forum.com/.
Tom D.
2013-May-15 14:40 UTC
[rspec-users] warning: toplevel constant XYZ referenced Admin:XYZ
the following is lifted from the ''Gotchas'' section of my own internal wiki, i hope it help''s someone else some day. Can''t load namespaced controllers Errors: warning: toplevel constant Finance referenced by Member::Finance OR uninitialized constant Finance Cause: a namespaced controller / helper which is listed BEFORE it''s dependency. e.g. ll member/finance/ bank_batches_controller.rb base_controller.rb Fix: make this the first line of the dependent require_dependency "#{RAILS_ROOT}/app/controllers/member/finance/base_controller". requiring the dependent file before attempting to load the class. Yes, this goes before class ... -- Posted via http://www.ruby-forum.com/.
Possibly Parallel Threads
- Method get of ActionController::TestCase ignores routes.rb?
- RSpec, RESTful nested routes and :path_prefix
- warning: toplevel constant SomeController referenced by Admin::SomeController
- Rspec not running properly
- subdomain based namespacing makes RSpec incorrectly state that the route doesn't exist