ActionController::Live in development without "config.cache_classes = true"?

Hey all,

we recently ported to Rails 4.0 from 3.2.13 with our application and were really excited about the new ActionController::Live functionalities. Part of our application is a messaging/notification system and we wanted to implement a live notification when a new message reaches the inbox of a user. To create not too much overhead we decided to implement some lame JavaScript polling function that checks for new messages every 15 seconds - not that fancy in my opinion :wink:

With ActionController::Live and Server-Sent Events (in combination with Redis) we were hoping to have found a good solution with not too much overhead. Maybe some of you know that for this to work you can’t go with the WebRICK web server - but we were fine to go with Puma.

But what really bugs me: You need to set “config.cache_classes” and “config.eager_load” to “true” for your development environment to let this combination (mentioned above) work out. That means that in development you have to restart the web server (Puma) each time you want code changes to be applied.

Did anyone else encounter these uncomfortable workflow? Is anybody out there who can give me some point to think forward from to find a solution for this?

Right now we’re thinking of a (very, very, very) bad hack: Activate the old-style polling based on JS within development environment to somehow verify that message notifications are send without a page reload and don’t use the ActionController::Live - and go with the good solution in the production environment.

In my opinion I would rather go with a better solution for development …

I would really appreciate any input on this topic :slight_smile:


Just add config.allow_concurrency = true to your development.rb.

Thanks for heading back here, Kristijan - I’ll go with that setting once I’ve some resources available to test this.