Rails: How to disable turbolinks in Rails 5?
It's a constant headache when dealing with websockets, and it kills my performance in addition to adding bugs. Since ActionCable is the whole reason I upgraded I'd very much like to get rid of it completely.
Basically straight from here. It's for Rails 4, but I believe the steps are the same.
1) Remove the gem 'turbolinks'
line from your Gemfile.
2) Remove the //= require turbolinks
from your app/assets/javascripts/application.js .
3) Remove the two "data-turbolinks-track" => true
hash key/value pairs from your app/views/layouts/application.html.erb .
Edit: As of at least Rails 5.0.0 the last step should refer to "data-turbolinks-track" => "reload"
as opposed to "data-turbolinks-track" => true
. Thanks to @boddhisattva
Edit: As of at least Rails 4.2 you can generate a project without turbolinks to begin with. Just use something like this:
rails new my_app --skip-turbolinks
Removing //= require turbolinks
from app/assets/javascripts/application.js
seems to have done the trick.
I also removed both turbolinks references in app/views/layouts/application.html.erb
If you are using Webpacker (Rails 5-6)
- Delete this line from
Gemfile
and runbundle
:
gem 'turbolinks', '~> 5'
-
Run
yarn remove turbolinks
-
Delete this line from application pack file
app/javascript/packs/application.js
:require("turbolinks").start()
-
Remove any
data-turbolinks
data attributes from your html.
Change:
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
<%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>
to
<%= stylesheet_link_tag 'application', media: 'all' %>
<%= javascript_pack_tag 'application' %>