Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

uninitialized constant Error caused by STI models #361

Closed
dustMason opened this issue Mar 30, 2011 · 6 comments
Closed

uninitialized constant Error caused by STI models #361

dustMason opened this issue Mar 30, 2011 · 6 comments
Assignees
Milestone

Comments

@dustMason
Copy link

I have a model event.rb:

    class Event < ActiveRecord::Base
      serialize :data
      belongs_to :user
    end
    class ProductAddedEvent < Event; end
    class CollectionCreatedEvent < Event; end
    class FollowingEvent < Event; end
    class FollowedEvent < Event; end
    class CommentAddedEvent < Event; end

which seems to be causing Rails Admin (latest version as of today) to throw an error when I try to look at any model:
uninitialized constant CollectionCreatedEvent

Extracted Source:
1: <%
2: max_visible_tabs = RailsAdmin::Config::Sections::Navigation.max_visible_tabs
3: models = RailsAdmin::Config.visible_models.select { |model| authorized?(:list, model.abstract_model) }
4: %>
5:


    6: <li <%if @page_type == "dashboard" %>class="active"<% end %>><%= link_to(t("admin.dashboard.name"), rails_admin_dashboard_path) %>

    Full Trace:
    activesupport (3.0.6.rc1) lib/active_support/inflector/methods.rb:113:in constantize' activesupport (3.0.6.rc1) lib/active_support/inflector/methods.rb:112:ineach'
    activesupport (3.0.6.rc1) lib/active_support/inflector/methods.rb:112:in constantize' activesupport (3.0.6.rc1) lib/active_support/core_ext/string/inflections.rb:43:inconstantize'
    /Library/Ruby/Gems/1.8/bundler/gems/rails_admin-508288dfdc24/lib/rails_admin/abstract_model.rb:74:in model' /Library/Ruby/Gems/1.8/bundler/gems/rails_admin-508288dfdc24/lib/rails_admin/config.rb:46:inmodel'
    /Library/Ruby/Gems/1.8/bundler/gems/rails_admin-508288dfdc24/lib/rails_admin/config.rb:67:in models' /Library/Ruby/Gems/1.8/bundler/gems/rails_admin-508288dfdc24/lib/rails_admin/config.rb:67:inmap'
    /Library/Ruby/Gems/1.8/bundler/gems/rails_admin-508288dfdc24/lib/rails_admin/config.rb:67:in models' /Library/Ruby/Gems/1.8/bundler/gems/rails_admin-508288dfdc24/lib/rails_admin/config.rb:95:invisible_models'
    /Library/Ruby/Gems/1.8/bundler/gems/rails_admin-508288dfdc24/app/views/rails_admin/main/_navigation.html.erb:3:in ___ibrary__uby__ems_____bundler_gems_rails_admin_______dfdc___app_views_rails_admin_main__navigation_html_erb___1743824518_2190578620_2143870' actionpack (3.0.6.rc1) lib/action_view/template.rb:135:insend'
    actionpack (3.0.6.rc1) lib/action_view/template.rb:135:in render' activesupport (3.0.6.rc1) lib/active_support/notifications.rb:54:ininstrument'
    actionpack (3.0.6.rc1) lib/action_view/template.rb:127:in render' actionpack (3.0.6.rc1) lib/action_view/render/partials.rb:333:inrender_partial'
    actionpack (3.0.6.rc1) lib/action_view/render/partials.rb:262:in render' activesupport (3.0.6.rc1) lib/active_support/notifications.rb:52:ininstrument'
    activesupport (3.0.6.rc1) lib/active_support/notifications/instrumenter.rb:21:in instrument' activesupport (3.0.6.rc1) lib/active_support/notifications.rb:52:ininstrument'
    actionpack (3.0.6.rc1) lib/action_view/render/partials.rb:260:in render' actionpack (3.0.6.rc1) lib/action_view/render/partials.rb:378:in_render_partial'
    actionpack (3.0.6.rc1) lib/action_view/render/rendering.rb:22:in render_without_haml' haml (3.0.25) lib/haml/helpers/action_view_mods.rb:13:inrender'
    /Library/Ruby/Gems/1.8/bundler/gems/rails_admin-508288dfdc24/app/views/layouts/rails_admin/_header.html.erb:13:in ___ibrary__uby__ems_____bundler_gems_rails_admin_______dfdc___app_views_layouts_rails_admin__header_html_erb__169155594_2190609040_527550' actionpack (3.0.6.rc1) lib/action_view/template.rb:135:insend'
    actionpack (3.0.6.rc1) lib/action_view/template.rb:135:in render' activesupport (3.0.6.rc1) lib/active_support/notifications.rb:54:ininstrument'
    actionpack (3.0.6.rc1) lib/action_view/template.rb:127:in render' actionpack (3.0.6.rc1) lib/action_view/render/partials.rb:333:inrender_partial'
    actionpack (3.0.6.rc1) lib/action_view/render/partials.rb:262:in render' activesupport (3.0.6.rc1) lib/active_support/notifications.rb:52:ininstrument'
    activesupport (3.0.6.rc1) lib/active_support/notifications/instrumenter.rb:21:in instrument' activesupport (3.0.6.rc1) lib/active_support/notifications.rb:52:ininstrument'
    actionpack (3.0.6.rc1) lib/action_view/render/partials.rb:260:in render' actionpack (3.0.6.rc1) lib/action_view/render/partials.rb:378:in_render_partial'
    actionpack (3.0.6.rc1) lib/action_view/render/rendering.rb:22:in render_without_haml' haml (3.0.25) lib/haml/helpers/action_view_mods.rb:13:inrender'
    /Library/Ruby/Gems/1.8/bundler/gems/rails_admin-508288dfdc24/app/views/layouts/rails_admin/list.html.erb:18:in ___ibrary__uby__ems_____bundler_gems_rails_admin_______dfdc___app_views_layouts_rails_admin_list_html_erb___556108490_2187854440_0' actionpack (3.0.6.rc1) lib/action_view/template.rb:135:insend'
    actionpack (3.0.6.rc1) lib/action_view/template.rb:135:in render' activesupport (3.0.6.rc1) lib/active_support/notifications.rb:54:ininstrument'
    actionpack (3.0.6.rc1) lib/action_view/template.rb:127:in render' actionpack (3.0.6.rc1) lib/action_view/render/layouts.rb:80:in_render_layout'
    actionpack (3.0.6.rc1) lib/action_view/render/rendering.rb:62:in _render_template' activesupport (3.0.6.rc1) lib/active_support/notifications.rb:52:ininstrument'
    activesupport (3.0.6.rc1) lib/active_support/notifications/instrumenter.rb:21:in instrument' activesupport (3.0.6.rc1) lib/active_support/notifications.rb:52:ininstrument'
    actionpack (3.0.6.rc1) lib/action_view/render/rendering.rb:56:in _render_template' actionpack (3.0.6.rc1) lib/action_view/render/rendering.rb:26:inrender_without_haml'
    haml (3.0.25) lib/haml/helpers/action_view_mods.rb:13:in render' actionpack (3.0.6.rc1) lib/abstract_controller/rendering.rb:115:in_render_template'
    actionpack (3.0.6.rc1) lib/abstract_controller/rendering.rb:109:in render_to_body' actionpack (3.0.6.rc1) lib/action_controller/metal/renderers.rb:47:inrender_to_body'
    actionpack (3.0.6.rc1) lib/action_controller/metal/compatibility.rb:55:in render_to_body' actionpack (3.0.6.rc1) lib/abstract_controller/rendering.rb:102:inrender_to_string'
    actionpack (3.0.6.rc1) lib/abstract_controller/rendering.rb:93:in render' actionpack (3.0.6.rc1) lib/action_controller/metal/rendering.rb:17:inrender'
    actionpack (3.0.6.rc1) lib/action_controller/metal/instrumentation.rb:40:in render' activesupport (3.0.6.rc1) lib/active_support/core_ext/benchmark.rb:5:inms'
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/benchmark.rb:308:in realtime' activesupport (3.0.6.rc1) lib/active_support/core_ext/benchmark.rb:5:inms'
    actionpack (3.0.6.rc1) lib/action_controller/metal/instrumentation.rb:40:in render' actionpack (3.0.6.rc1) lib/action_controller/metal/instrumentation.rb:78:incleanup_view_runtime'
    activerecord (3.0.6.rc1) lib/active_record/railties/controller_runtime.rb:15:in cleanup_view_runtime' actionpack (3.0.6.rc1) lib/action_controller/metal/instrumentation.rb:39:inrender'
    /Library/Ruby/Gems/1.8/bundler/gems/rails_admin-508288dfdc24/app/controllers/rails_admin/main_controller.rb:39:in list' actionpack (3.0.6.rc1) lib/action_controller/metal/mime_responds.rb:192:incall'
    actionpack (3.0.6.rc1) lib/action_controller/metal/mime_responds.rb:192:in respond_to' /Library/Ruby/Gems/1.8/bundler/gems/rails_admin-508288dfdc24/app/controllers/rails_admin/main_controller.rb:38:inlist'
    actionpack (3.0.6.rc1) lib/action_controller/metal/implicit_render.rb:4:in send_action' actionpack (3.0.6.rc1) lib/action_controller/metal/implicit_render.rb:4:insend_action'
    actionpack (3.0.6.rc1) lib/abstract_controller/base.rb:150:in process_action' actionpack (3.0.6.rc1) lib/action_controller/metal/rendering.rb:11:inprocess_action'
    actionpack (3.0.6.rc1) lib/abstract_controller/callbacks.rb:18:in process_action' activesupport (3.0.6.rc1) lib/active_support/callbacks.rb:456:in_run__1766623449__process_action__743455353__callbacks'
    activesupport (3.0.6.rc1) lib/active_support/callbacks.rb:410:in send' activesupport (3.0.6.rc1) lib/active_support/callbacks.rb:410:in_run_process_action_callbacks'
    activesupport (3.0.6.rc1) lib/active_support/callbacks.rb:94:in send' activesupport (3.0.6.rc1) lib/active_support/callbacks.rb:94:inrun_callbacks'
    actionpack (3.0.6.rc1) lib/abstract_controller/callbacks.rb:17:in process_action' actionpack (3.0.6.rc1) lib/action_controller/metal/instrumentation.rb:30:inprocess_action'
    activesupport (3.0.6.rc1) lib/active_support/notifications.rb:52:in instrument' activesupport (3.0.6.rc1) lib/active_support/notifications/instrumenter.rb:21:ininstrument'
    activesupport (3.0.6.rc1) lib/active_support/notifications.rb:52:in instrument' actionpack (3.0.6.rc1) lib/action_controller/metal/instrumentation.rb:29:inprocess_action'
    actionpack (3.0.6.rc1) lib/action_controller/metal/rescue.rb:17:in process_action' actionpack (3.0.6.rc1) lib/abstract_controller/base.rb:119:inprocess'
    actionpack (3.0.6.rc1) lib/abstract_controller/rendering.rb:41:in process' actionpack (3.0.6.rc1) lib/action_controller/metal.rb:138:indispatch'
    actionpack (3.0.6.rc1) lib/action_controller/metal/rack_delegation.rb:14:in dispatch' actionpack (3.0.6.rc1) lib/action_controller/metal.rb:178:inaction'
    actionpack (3.0.6.rc1) lib/action_dispatch/routing/route_set.rb:62:in call' actionpack (3.0.6.rc1) lib/action_dispatch/routing/route_set.rb:62:indispatch'
    actionpack (3.0.6.rc1) lib/action_dispatch/routing/route_set.rb:27:in call' rack-mount (0.6.14) lib/rack/mount/route_set.rb:148:incall'
    rack-mount (0.6.14) lib/rack/mount/code_generation.rb:93:in recognize' rack-mount (0.6.14) lib/rack/mount/code_generation.rb:82:inoptimized_each'
    rack-mount (0.6.14) lib/rack/mount/code_generation.rb:92:in recognize' rack-mount (0.6.14) lib/rack/mount/route_set.rb:139:incall'
    actionpack (3.0.6.rc1) lib/action_dispatch/routing/route_set.rb:493:in call' haml (3.0.25) lib/sass/plugin/rack.rb:41:incall'
    warden (1.0.3) lib/warden/manager.rb:35:in call' warden (1.0.3) lib/warden/manager.rb:34:incatch'
    warden (1.0.3) lib/warden/manager.rb:34:in call' actionpack (3.0.6.rc1) lib/action_dispatch/middleware/best_standards_support.rb:17:incall'
    actionpack (3.0.6.rc1) lib/action_dispatch/middleware/head.rb:14:in call' rack (1.2.2) lib/rack/methodoverride.rb:24:incall'
    actionpack (3.0.6.rc1) lib/action_dispatch/middleware/params_parser.rb:21:in call' actionpack (3.0.6.rc1) lib/action_dispatch/middleware/flash.rb:182:incall'
    actionpack (3.0.6.rc1) lib/action_dispatch/middleware/session/abstract_store.rb:149:in call' actionpack (3.0.6.rc1) lib/action_dispatch/middleware/cookies.rb:302:incall'
    activerecord (3.0.6.rc1) lib/active_record/query_cache.rb:32:in call' activerecord (3.0.6.rc1) lib/active_record/connection_adapters/abstract/query_cache.rb:28:incache'
    activerecord (3.0.6.rc1) lib/active_record/query_cache.rb:12:in cache' activerecord (3.0.6.rc1) lib/active_record/query_cache.rb:31:incall'
    activerecord (3.0.6.rc1) lib/active_record/connection_adapters/abstract/connection_pool.rb:354:in call' actionpack (3.0.6.rc1) lib/action_dispatch/middleware/callbacks.rb:46:incall'
    activesupport (3.0.6.rc1) lib/active_support/callbacks.rb:416:in _run_call_callbacks' actionpack (3.0.6.rc1) lib/action_dispatch/middleware/callbacks.rb:44:incall'
    rack (1.2.2) lib/rack/sendfile.rb:107:in call' actionpack (3.0.6.rc1) lib/action_dispatch/middleware/remote_ip.rb:48:incall'
    actionpack (3.0.6.rc1) lib/action_dispatch/middleware/show_exceptions.rb:47:in call' railties (3.0.6.rc1) lib/rails/rack/logger.rb:13:incall'
    rack (1.2.2) lib/rack/runtime.rb:17:in call' activesupport (3.0.6.rc1) lib/active_support/cache/strategy/local_cache.rb:72:incall'
    rack (1.2.2) lib/rack/lock.rb:11:in call' rack (1.2.2) lib/rack/lock.rb:11:insynchronize'
    rack (1.2.2) lib/rack/lock.rb:11:in call' actionpack (3.0.6.rc1) lib/action_dispatch/middleware/static.rb:30:incall'
    railties (3.0.6.rc1) lib/rails/application.rb:168:in call' railties (3.0.6.rc1) lib/rails/application.rb:77:insend'
    railties (3.0.6.rc1) lib/rails/application.rb:77:in method_missing' railties (3.0.6.rc1) lib/rails/rack/log_tailer.rb:14:incall'
    rack (1.2.2) lib/rack/content_length.rb:13:in call' rack (1.2.2) lib/rack/handler/webrick.rb:52:inservice'
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/webrick/httpserver.rb:104:in service' /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/webrick/httpserver.rb:65:inrun'
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/webrick/server.rb:173:in start_thread' /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/webrick/server.rb:162:instart'
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/webrick/server.rb:162:in start_thread' /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/webrick/server.rb:95:instart'
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/webrick/server.rb:92:in each' /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/webrick/server.rb:92:instart'
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/webrick/server.rb:23:in start' /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/webrick/server.rb:82:instart'
    rack (1.2.2) lib/rack/handler/webrick.rb:13:in run' rack (1.2.2) lib/rack/server.rb:213:instart'
    railties (3.0.6.rc1) lib/rails/commands/server.rb:65:in start' railties (3.0.6.rc1) lib/rails/commands.rb:30 railties (3.0.6.rc1) lib/rails/commands.rb:27:intap'
    railties (3.0.6.rc1) lib/rails/commands.rb:27
    script/rails:6:in `require'
    script/rails:6

    Note that hiding the models in an initializer doesn't seem to help:
    RailsAdmin.config do |config|
    config.model Event::ProductAddedEvent do
    visible false
    end
    config.model Event::CollectionCreatedEvent do
    visible false
    end
    config.model Event::FollowingEvent do
    visible false
    end
    config.model Event::FollowedEvent do
    visible false
    end
    config.model Event::CommentAddedEvent do
    visible false
    end
    end

@dustMason
Copy link
Author

damn, i didnt mean to close this issue...
i am still seeing uninitialized constant errors with my STI classes, even when using config.excluded_models

@kaapa kaapa reopened this Apr 5, 2011
@kaapa
Copy link
Collaborator

kaapa commented Apr 5, 2011

Reopened.

@theodorton
Copy link
Contributor

Any progress on this? I started seeing this outside of Rails Admin today. In a namespaced controller, with a namespaced model.

Removing the list and edit blocks from the rails_admin config in the parent model seemed to "fix" the issue for my part.

No problems if using the console to load the class and run code. It's just affected when running requests/code through the server.

Sorry if this ain't enough information or if it should be posted as a new issue, but if you need anything more I'll be happy to help :)

EDIT: The stack trace for the error:

app/models/backend/lead.rb:5:in `block (2 levels) in <class:Lead>' 
app/models/backend/lead.rb:3:in `block in <class:Lead>' # rails_admin EDIT block
app/models/backend/lead.rb:2:in `<class:Lead>'
app/models/backend/lead.rb:1:in `<top (required)>'
app/models/backend/employee.rb:5:in `block (2 levels) in <class:Employee>' 
app/models/backend/employee.rb:4:in `block in <class:Employee>' # rails_admin LIST block
app/models/backend/employee.rb:2:in `<class:Employee>'
app/models/backend/employee.rb:1:in `<top (required)>'
app/models/backend/contact.rb:9:in `block (2 levels) in <class:Contact>' # rails_admin LIST block
app/models/backend/contact.rb:8:in `block in <class:Contact>' # rails_admin list block
app/models/backend/contact.rb:2:in `<class:Contact>'
app/models/backend/contact.rb:1:in `<top (required)>'
app/models/backend/company.rb:23:in `block in <class:Company>'  # rails_admin LIST block
app/models/backend/company.rb:17:in `<class:Company>'
app/models/backend/company.rb:1:in `<top (required)>'
app/models/backend/supplier.rb:1:in `<top (required)>'
app/controllers/backend/suppliers_controller.rb:3:in `index'

@sferik
Copy link
Collaborator

sferik commented Aug 20, 2011

@mediavine reported a similar problem in issue #558.

@ghost ghost assigned kaapa Aug 20, 2011
@mshibuya
Copy link
Member

@dustMason this occurs because you have put all child classes in event.rb.
When Rails was requested to load CollectionCreatedEvent class, it will look for 'collection_created_event.rb' in your app(and that doesn't exist so error happens).
Separating child class definitions as

  • app/model/event.rb
class Event < ActiveRecord::Base
  serialize :data
  belongs_to :user
end
  • app/model/collection_created_event.rb
class CollectionCreatedEvent < Event; end
  • app/model/comment_added_event.rb
class CommentAddedEvent < Event; end
  • and so on...

will solve your problem.

(tested with Rails3.0.7 and rails_admin(2b4573e))

@bbenezech
Copy link
Collaborator

Please reopen if #462 didn't fix it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

6 participants