Closed senny closed 8 years ago
I've not seen this issue. Could you try and locate the code that's loading the models in your case, or maybe make a small sample app that shows the issue? Also which version of JR are you using (sorry if I missed it in the stack trace).
@lgebhardt The backtrace above shows where the autoloading in the boot process is taking place. The relevant frames are:
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.6/lib/active_support/core_ext/string/inflections.rb:77:in `safe_constantize'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/bundler/gems/jsonapi-resources-a77967191819/lib/jsonapi/resource.rb:342:in `resource_for'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/bundler/gems/jsonapi-resources-a77967191819/lib/jsonapi/routing_ext.rb:61:in `jsonapi_resources'
/Users/senny/Projects/my_app/config/routes.rb:47:in `block (5 levels) in <top (required)>'
and
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/bundler/gems/jsonapi-resources-a77967191819/lib/jsonapi/resource.rb:430:in `has_one'
/Users/senny/Projects/my_app/app/resources/api/v1/my_model_resource.rb:26:in `<class:MyModelResource>'
So it looks like jsonapi_resources
is loading the resource class during the boot process and the has_one
association on that resource triggers the model loading.
@senny I see where it's loading the model. However I'm not able to reproduce the issue. Can you give me some steps, preferably using a public project such as the Peeps demo https://github.com/cerebris/peeps ?
@lgebhardt that peeps
repo is already a reproduction. I just forked and ran bin/rails s
and it's loading the models. That's my diff:
diff --git a/app/models/contact.rb b/app/models/contact.rb
index 3dfc347..1e2d7fa 100644
--- a/app/models/contact.rb
+++ b/app/models/contact.rb
@@ -1,3 +1,5 @@
+puts "++++++++++++++++++++"
+puts caller
class Contact < ActiveRecord::Base
has_many :phone_numbers
diff --git a/app/models/phone_number.rb b/app/models/phone_number.rb
index ea43329..e6f2c5f 100644
--- a/app/models/phone_number.rb
+++ b/app/models/phone_number.rb
@@ -1,3 +1,5 @@
+puts "++++++++++++++++++++"
+puts caller
class PhoneNumber < ActiveRecord::Base
belongs_to :contact
end
And the output of bin/rails s
:
=> Booting WEBrick
=> Rails 4.2.2 application starting in development on http://localhost:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
++++++++++++++++++++
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/dependencies.rb:457:in `load'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/dependencies.rb:457:in `block in load_file'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/dependencies.rb:647:in `new_constants_in'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/dependencies.rb:456:in `load_file'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/dependencies.rb:354:in `require_or_load'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/dependencies.rb:494:in `load_missing_constant'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/dependencies.rb:184:in `const_missing'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/inflector/methods.rb:261:in `const_get'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/inflector/methods.rb:261:in `block in constantize'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/inflector/methods.rb:259:in `each'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/inflector/methods.rb:259:in `inject'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/inflector/methods.rb:259:in `constantize'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/inflector/methods.rb:304:in `safe_constantize'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/core_ext/string/inflections.rb:77:in `safe_constantize'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/jsonapi-resources-0.7.0/lib/jsonapi/resource.rb:739:in `_model_class'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/jsonapi-resources-0.7.0/lib/jsonapi/resource.rb:775:in `block in _add_relationship'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/jsonapi-resources-0.7.0/lib/jsonapi/resource.rb:769:in `each'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/jsonapi-resources-0.7.0/lib/jsonapi/resource.rb:769:in `_add_relationship'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/jsonapi-resources-0.7.0/lib/jsonapi/resource.rb:400:in `has_many'
/Users/senny/Projects/github/peeps/app/resources/contact_resource.rb:3:in `<class:ContactResource>'
/Users/senny/Projects/github/peeps/app/resources/contact_resource.rb:1:in `<top (required)>'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/dependencies.rb:457:in `load'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/dependencies.rb:457:in `block in load_file'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/dependencies.rb:647:in `new_constants_in'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/dependencies.rb:456:in `load_file'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/dependencies.rb:354:in `require_or_load'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/dependencies.rb:494:in `load_missing_constant'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/dependencies.rb:184:in `const_missing'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/inflector/methods.rb:261:in `const_get'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/inflector/methods.rb:261:in `block in constantize'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/inflector/methods.rb:259:in `each'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/inflector/methods.rb:259:in `inject'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/inflector/methods.rb:259:in `constantize'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/inflector/methods.rb:304:in `safe_constantize'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/core_ext/string/inflections.rb:77:in `safe_constantize'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/jsonapi-resources-0.7.0/lib/jsonapi/resource.rb:308:in `resource_for'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/jsonapi-resources-0.7.0/lib/jsonapi/routing_ext.rb:61:in `jsonapi_resources'
/Users/senny/Projects/github/peeps/config/routes.rb:2:in `block in <top (required)>'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/actionpack-4.2.2/lib/action_dispatch/routing/route_set.rb:432:in `instance_exec'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/actionpack-4.2.2/lib/action_dispatch/routing/route_set.rb:432:in `eval_block'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/actionpack-4.2.2/lib/action_dispatch/routing/route_set.rb:410:in `draw'
/Users/senny/Projects/github/peeps/config/routes.rb:1:in `<top (required)>'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/dependencies.rb:268:in `load'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/dependencies.rb:268:in `block in load'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/dependencies.rb:240:in `load_dependency'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/dependencies.rb:268:in `load'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/railties-4.2.2/lib/rails/application/routes_reloader.rb:40:in `block in load_paths'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/railties-4.2.2/lib/rails/application/routes_reloader.rb:40:in `each'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/railties-4.2.2/lib/rails/application/routes_reloader.rb:40:in `load_paths'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/railties-4.2.2/lib/rails/application/routes_reloader.rb:16:in `reload!'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/railties-4.2.2/lib/rails/application/routes_reloader.rb:26:in `block in updater'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/file_update_checker.rb:75:in `execute'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/railties-4.2.2/lib/rails/application/routes_reloader.rb:27:in `updater'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/railties-4.2.2/lib/rails/application/routes_reloader.rb:7:in `execute_if_updated'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/railties-4.2.2/lib/rails/application/finisher.rb:69:in `block in <module:Finisher>'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/railties-4.2.2/lib/rails/initializable.rb:30:in `instance_exec'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/railties-4.2.2/lib/rails/initializable.rb:30:in `run'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/railties-4.2.2/lib/rails/initializable.rb:55:in `block in run_initializers'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/2.3.0/tsort.rb:228:in `block in tsort_each'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/2.3.0/tsort.rb:350:in `block (2 levels) in each_strongly_connected_component'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/2.3.0/tsort.rb:431:in `each_strongly_connected_component_from'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/2.3.0/tsort.rb:349:in `block in each_strongly_connected_component'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/2.3.0/tsort.rb:347:in `each'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/2.3.0/tsort.rb:347:in `call'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/2.3.0/tsort.rb:347:in `each_strongly_connected_component'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/2.3.0/tsort.rb:226:in `tsort_each'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/2.3.0/tsort.rb:205:in `tsort_each'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/railties-4.2.2/lib/rails/initializable.rb:54:in `run_initializers'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/railties-4.2.2/lib/rails/application.rb:352:in `initialize!'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/railties-4.2.2/lib/rails/railtie.rb:194:in `public_send'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/railties-4.2.2/lib/rails/railtie.rb:194:in `method_missing'
/Users/senny/Projects/github/peeps/config/environment.rb:5:in `<top (required)>'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/dependencies.rb:274:in `require'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/dependencies.rb:274:in `block in require'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/dependencies.rb:240:in `load_dependency'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/dependencies.rb:274:in `require'
/Users/senny/Projects/github/peeps/config.ru:3:in `block in <main>'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/rack-1.6.4/lib/rack/builder.rb:55:in `instance_eval'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/rack-1.6.4/lib/rack/builder.rb:55:in `initialize'
/Users/senny/Projects/github/peeps/config.ru:in `new'
/Users/senny/Projects/github/peeps/config.ru:in `<main>'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/rack-1.6.4/lib/rack/builder.rb:49:in `eval'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/rack-1.6.4/lib/rack/builder.rb:49:in `new_from_string'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/rack-1.6.4/lib/rack/builder.rb:40:in `parse_file'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/rack-1.6.4/lib/rack/server.rb:299:in `build_app_and_options_from_config'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/rack-1.6.4/lib/rack/server.rb:208:in `app'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/railties-4.2.2/lib/rails/commands/server.rb:61:in `app'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/rack-1.6.4/lib/rack/server.rb:336:in `wrapped_app'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/railties-4.2.2/lib/rails/commands/server.rb:139:in `log_to_stdout'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/railties-4.2.2/lib/rails/commands/server.rb:78:in `start'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/railties-4.2.2/lib/rails/commands/commands_tasks.rb:80:in `block in server'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/railties-4.2.2/lib/rails/commands/commands_tasks.rb:75:in `tap'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/railties-4.2.2/lib/rails/commands/commands_tasks.rb:75:in `server'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/railties-4.2.2/lib/rails/commands/commands_tasks.rb:39:in `run_command!'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/railties-4.2.2/lib/rails/commands.rb:17:in `<top (required)>'
bin/rails:4:in `require'
bin/rails:4:in `<main>'
++++++++++++++++++++
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/dependencies.rb:457:in `load'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/dependencies.rb:457:in `block in load_file'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/dependencies.rb:647:in `new_constants_in'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/dependencies.rb:456:in `load_file'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/dependencies.rb:354:in `require_or_load'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/dependencies.rb:494:in `load_missing_constant'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/dependencies.rb:184:in `const_missing'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/inflector/methods.rb:261:in `const_get'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/inflector/methods.rb:261:in `block in constantize'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/inflector/methods.rb:259:in `each'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/inflector/methods.rb:259:in `inject'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/inflector/methods.rb:259:in `constantize'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/inflector/methods.rb:304:in `safe_constantize'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/core_ext/string/inflections.rb:77:in `safe_constantize'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/jsonapi-resources-0.7.0/lib/jsonapi/resource.rb:739:in `_model_class'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/jsonapi-resources-0.7.0/lib/jsonapi/resource.rb:775:in `block in _add_relationship'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/jsonapi-resources-0.7.0/lib/jsonapi/resource.rb:769:in `each'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/jsonapi-resources-0.7.0/lib/jsonapi/resource.rb:769:in `_add_relationship'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/jsonapi-resources-0.7.0/lib/jsonapi/resource.rb:396:in `has_one'
/Users/senny/Projects/github/peeps/app/resources/phone_number_resource.rb:3:in `<class:PhoneNumberResource>'
/Users/senny/Projects/github/peeps/app/resources/phone_number_resource.rb:1:in `<top (required)>'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/dependencies.rb:457:in `load'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/dependencies.rb:457:in `block in load_file'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/dependencies.rb:647:in `new_constants_in'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/dependencies.rb:456:in `load_file'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/dependencies.rb:354:in `require_or_load'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/dependencies.rb:494:in `load_missing_constant'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/dependencies.rb:184:in `const_missing'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/inflector/methods.rb:261:in `const_get'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/inflector/methods.rb:261:in `block in constantize'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/inflector/methods.rb:259:in `each'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/inflector/methods.rb:259:in `inject'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/inflector/methods.rb:259:in `constantize'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/inflector/methods.rb:304:in `safe_constantize'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/core_ext/string/inflections.rb:77:in `safe_constantize'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/jsonapi-resources-0.7.0/lib/jsonapi/resource.rb:308:in `resource_for'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/jsonapi-resources-0.7.0/lib/jsonapi/routing_ext.rb:201:in `jsonapi_related_resources'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/jsonapi-resources-0.7.0/lib/jsonapi/routing_ext.rb:51:in `block in jsonapi_relationships'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/jsonapi-resources-0.7.0/lib/jsonapi/routing_ext.rb:48:in `each'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/jsonapi-resources-0.7.0/lib/jsonapi/routing_ext.rb:48:in `jsonapi_relationships'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/jsonapi-resources-0.7.0/lib/jsonapi/routing_ext.rb:95:in `block in jsonapi_resources'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/actionpack-4.2.2/lib/action_dispatch/routing/mapper.rb:1356:in `block in resources'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/actionpack-4.2.2/lib/action_dispatch/routing/mapper.rb:1676:in `block (2 levels) in resource_scope'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/actionpack-4.2.2/lib/action_dispatch/routing/mapper.rb:816:in `scope'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/actionpack-4.2.2/lib/action_dispatch/routing/mapper.rb:1676:in `block in resource_scope'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/actionpack-4.2.2/lib/action_dispatch/routing/mapper.rb:1665:in `with_scope_level'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/actionpack-4.2.2/lib/action_dispatch/routing/mapper.rb:1675:in `resource_scope'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/actionpack-4.2.2/lib/action_dispatch/routing/mapper.rb:1355:in `resources'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/jsonapi-resources-0.7.0/lib/jsonapi/routing_ext.rb:89:in `jsonapi_resources'
/Users/senny/Projects/github/peeps/config/routes.rb:2:in `block in <top (required)>'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/actionpack-4.2.2/lib/action_dispatch/routing/route_set.rb:432:in `instance_exec'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/actionpack-4.2.2/lib/action_dispatch/routing/route_set.rb:432:in `eval_block'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/actionpack-4.2.2/lib/action_dispatch/routing/route_set.rb:410:in `draw'
/Users/senny/Projects/github/peeps/config/routes.rb:1:in `<top (required)>'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/dependencies.rb:268:in `load'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/dependencies.rb:268:in `block in load'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/dependencies.rb:240:in `load_dependency'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/dependencies.rb:268:in `load'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/railties-4.2.2/lib/rails/application/routes_reloader.rb:40:in `block in load_paths'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/railties-4.2.2/lib/rails/application/routes_reloader.rb:40:in `each'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/railties-4.2.2/lib/rails/application/routes_reloader.rb:40:in `load_paths'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/railties-4.2.2/lib/rails/application/routes_reloader.rb:16:in `reload!'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/railties-4.2.2/lib/rails/application/routes_reloader.rb:26:in `block in updater'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/file_update_checker.rb:75:in `execute'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/railties-4.2.2/lib/rails/application/routes_reloader.rb:27:in `updater'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/railties-4.2.2/lib/rails/application/routes_reloader.rb:7:in `execute_if_updated'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/railties-4.2.2/lib/rails/application/finisher.rb:69:in `block in <module:Finisher>'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/railties-4.2.2/lib/rails/initializable.rb:30:in `instance_exec'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/railties-4.2.2/lib/rails/initializable.rb:30:in `run'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/railties-4.2.2/lib/rails/initializable.rb:55:in `block in run_initializers'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/2.3.0/tsort.rb:228:in `block in tsort_each'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/2.3.0/tsort.rb:350:in `block (2 levels) in each_strongly_connected_component'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/2.3.0/tsort.rb:431:in `each_strongly_connected_component_from'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/2.3.0/tsort.rb:349:in `block in each_strongly_connected_component'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/2.3.0/tsort.rb:347:in `each'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/2.3.0/tsort.rb:347:in `call'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/2.3.0/tsort.rb:347:in `each_strongly_connected_component'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/2.3.0/tsort.rb:226:in `tsort_each'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/2.3.0/tsort.rb:205:in `tsort_each'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/railties-4.2.2/lib/rails/initializable.rb:54:in `run_initializers'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/railties-4.2.2/lib/rails/application.rb:352:in `initialize!'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/railties-4.2.2/lib/rails/railtie.rb:194:in `public_send'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/railties-4.2.2/lib/rails/railtie.rb:194:in `method_missing'
/Users/senny/Projects/github/peeps/config/environment.rb:5:in `<top (required)>'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/dependencies.rb:274:in `require'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/dependencies.rb:274:in `block in require'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/dependencies.rb:240:in `load_dependency'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.2/lib/active_support/dependencies.rb:274:in `require'
/Users/senny/Projects/github/peeps/config.ru:3:in `block in <main>'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/rack-1.6.4/lib/rack/builder.rb:55:in `instance_eval'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/rack-1.6.4/lib/rack/builder.rb:55:in `initialize'
/Users/senny/Projects/github/peeps/config.ru:in `new'
/Users/senny/Projects/github/peeps/config.ru:in `<main>'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/rack-1.6.4/lib/rack/builder.rb:49:in `eval'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/rack-1.6.4/lib/rack/builder.rb:49:in `new_from_string'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/rack-1.6.4/lib/rack/builder.rb:40:in `parse_file'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/rack-1.6.4/lib/rack/server.rb:299:in `build_app_and_options_from_config'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/rack-1.6.4/lib/rack/server.rb:208:in `app'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/railties-4.2.2/lib/rails/commands/server.rb:61:in `app'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/rack-1.6.4/lib/rack/server.rb:336:in `wrapped_app'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/railties-4.2.2/lib/rails/commands/server.rb:139:in `log_to_stdout'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/railties-4.2.2/lib/rails/commands/server.rb:78:in `start'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/railties-4.2.2/lib/rails/commands/commands_tasks.rb:80:in `block in server'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/railties-4.2.2/lib/rails/commands/commands_tasks.rb:75:in `tap'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/railties-4.2.2/lib/rails/commands/commands_tasks.rb:75:in `server'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/railties-4.2.2/lib/rails/commands/commands_tasks.rb:39:in `run_command!'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/railties-4.2.2/lib/rails/commands.rb:17:in `<top (required)>'
bin/rails:4:in `require'
bin/rails:4:in `<main>'
[2016-05-09 10:13:59] INFO WEBrick 1.3.1
[2016-05-09 10:13:59] INFO ruby 2.3.0 (2015-12-25) [x86_64-darwin15]
[2016-05-09 10:13:59] INFO WEBrick::HTTPServer#start: pid=85309 port=3000
gs
^C[2016-05-09 10:14:14] INFO going to shutdown ...
[2016-05-09 10:14:14] INFO WEBrick::HTTPServer#start done.
Exiting
Uncommenting the jsonapi-resources routes resolves the issue:
diff --git a/config/routes.rb b/config/routes.rb
index 71f249f..60a7033 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -1,4 +1,4 @@
Peeps::Application.routes.draw do
- jsonapi_resources :contacts
- jsonapi_resources :phone_numbers
+ # jsonapi_resources :contacts
+ # jsonapi_resources :phone_numbers
end
Running bin/rails s
now yields:
=> Booting WEBrick
=> Rails 4.2.2 application starting in development on http://localhost:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
[2016-05-09 10:16:05] INFO WEBrick 1.3.1
[2016-05-09 10:16:05] INFO ruby 2.3.0 (2015-12-25) [x86_64-darwin15]
[2016-05-09 10:16:05] INFO WEBrick::HTTPServer#start: pid=85591 port=3000
@senny I could see that the models are being loaded when the resources are first initialized. What I'm trying to reproduce is the error (MyModel(#70207742803840) expected, got MyModel(#70207749007680)
) that this is causing.
looks like I was stuck in the 3.2. days. Autoloading does play nice with models that are required in routes (https://github.com/rails/rails/commit/b9b06daa915fdc4d11e8cfe11a7175e5cd8f104f).
Digging deeper, our issue was caused by a monkey patch we applied to a Doorkeeper model that later leaked into the jsonapi-resources π.
@lgebhardt sorry for the confusion and thanks for your time looking into this. π
We are getting a lot of
MyModel(#70207742803840) expected, got MyModel(#70207749007680)
errors lately. This usually happens when models are loaded during the Rails boot process. They might be unloaded later on leaving stale class references behind.It looks like using the
jsonapi_resources
helper inconfig/routes.rb
loads the corresponding resource, which might load models depending on what associations are defined. Is this expected to happen? How is it intended to integrate with the code reloading provided by Rails?Following is a sample backtrace to such a model being loaded when starting the server with
bin/rails s
.