cerebris / jsonapi-resources

A resource-focused Rails library for developing JSON:API compliant servers.
http://jsonapi-resources.com
MIT License
2.32k stars 529 forks source link

Models are loaded during boot up in development #691

Closed senny closed 8 years ago

senny commented 8 years ago

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 in config/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.

/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.6/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.6/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.6/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.6/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.6/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.6/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.6/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.6/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.6/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.6/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.6/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.6/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.6/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.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:783:in `_model_class'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/bundler/gems/jsonapi-resources-a77967191819/lib/jsonapi/resource.rb:819:in `block in _add_relationship'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/bundler/gems/jsonapi-resources-a77967191819/lib/jsonapi/resource.rb:813:in `each'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/bundler/gems/jsonapi-resources-a77967191819/lib/jsonapi/resource.rb:813:in `_add_relationship'
/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>'
/Users/senny/Projects/my_app/app/resources/api/v1/my_model_resource.rb:4:in `<module:V1>'
/Users/senny/Projects/my_app/app/resources/api/v1/my_model_resource.rb:3:in `<module:API>'
/Users/senny/Projects/my_app/app/resources/api/v1/my_model_resource.rb:2:in `<top (required)>'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.6/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.6/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.6/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.6/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.6/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.6/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.6/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.6/lib/active_support/inflector/methods.rb:263:in `const_get'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.6/lib/active_support/inflector/methods.rb:263:in `block in constantize'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.6/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.6/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.6/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.6/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.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)>'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/actionpack-4.2.6/lib/action_dispatch/routing/mapper.rb:817:in `scope'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/versionist-1.4.1/lib/versionist/routing.rb:45:in `configure_header'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/versionist-1.4.1/lib/versionist/routing.rb:32:in `api_version'
/Users/senny/Projects/my_app/config/initializers/versionist.rb:5:in `header_api_version'
/Users/senny/Projects/my_app/config/routes.rb:22:in `block (4 levels) in <top (required)>'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/actionpack-4.2.6/lib/action_dispatch/routing/mapper.rb:817:in `scope'
/Users/senny/Projects/my_app/config/routes.rb:21:in `block (3 levels) in <top (required)>'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/actionpack-4.2.6/lib/action_dispatch/routing/mapper.rb:882:in `block in namespace'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/actionpack-4.2.6/lib/action_dispatch/routing/mapper.rb:817:in `scope'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/actionpack-4.2.6/lib/action_dispatch/routing/mapper.rb:882:in `namespace'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/actionpack-4.2.6/lib/action_dispatch/routing/mapper.rb:1456:in `namespace'
/Users/senny/Projects/my_app/config/routes.rb:20:in `block (2 levels) in <top (required)>'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/actionpack-4.2.6/lib/action_dispatch/routing/mapper.rb:941:in `block in constraints'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/actionpack-4.2.6/lib/action_dispatch/routing/mapper.rb:817:in `scope'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/actionpack-4.2.6/lib/action_dispatch/routing/mapper.rb:941:in `constraints'
/Users/senny/Projects/my_app/config/routes.rb:18:in `block in <top (required)>'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/actionpack-4.2.6/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.6/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.6/lib/action_dispatch/routing/route_set.rb:410:in `draw'
/Users/senny/Projects/my_app/config/routes.rb:2:in `<top (required)>'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.6/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.6/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.6/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.6/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.6/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.6/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.6/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.6/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.6/lib/rails/application.rb:170:in `reload_routes!'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/devise-3.5.6/lib/devise/rails.rb:14:in `block in <class:Engine>'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.6/lib/active_support/lazy_load_hooks.rb:36:in `execute_hook'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.6/lib/active_support/lazy_load_hooks.rb:45:in `block in run_load_hooks'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.6/lib/active_support/lazy_load_hooks.rb:44:in `each'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.6/lib/active_support/lazy_load_hooks.rb:44:in `run_load_hooks'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/railties-4.2.6/lib/rails/application/finisher.rb:55:in `block in <module:Finisher>'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/railties-4.2.6/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.6/lib/rails/initializable.rb:30:in `run'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/railties-4.2.6/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.6/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.6/lib/rails/application.rb:352:in `initialize!'
/Users/senny/Projects/my_app/config/environment.rb:6:in `<top (required)>'
/Users/senny/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-4.2.6/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.6/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.6/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.6/lib/active_support/dependencies.rb:274:in `require'
/Users/senny/Projects/my_app/config.ru:2:in `block in <main>'
lgebhardt commented 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).

senny commented 8 years ago

@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.

lgebhardt commented 8 years ago

@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 ?

senny commented 8 years ago

@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
lgebhardt commented 8 years ago

@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.

senny commented 8 years ago

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. πŸ’›