Reputation: 14769
I changed a JS file under app/assets/javascripts but it is still the same. I deleted the file and re-created but the content is still the old one. This is my development.rb file:
App::Application.configure do
# Settings specified here will take precedence over those in config/application.rb
config.serve_static_assets = false
# In the development environment your application's code is reloaded on
# every request. This slows down response time but is perfect for development
# since you don't have to restart the web server when you make code changes.
config.cache_classes = false
# Log error messages when you accidentally call methods on nil.
config.whiny_nils = true
# Show full error reports and disable caching
config.consider_all_requests_local = true
config.action_controller.perform_caching = false
# Don't care if the mailer can't send
config.action_mailer.raise_delivery_errors = false
# Print deprecation notices to the Rails logger
config.active_support.deprecation = :log
# Only use best-standards-support built into browsers
config.action_dispatch.best_standards_support = :builtin
# Do not compress assets
config.assets.compress = false
# Expands the lines which load the assets
config.assets.debug = true
config.action_mailer.delivery_method = :letter_opener
config.action_mailer.default_url_options = { :host => "lvh.me:3000" }
# Raise exception on mass assignment protection for Active Record models
# config.active_record.mass_assignment_sanitizer = :strict
# Log the query plan for queries taking more than this (works
# with SQLite, MySQL, and PostgreSQL)
config.active_record.auto_explain_threshold_in_seconds = 0.5
config.log_tags = [:uuid, :remote_ip]
end
The JS file is loaded inside the header tag with this code:
<script src="/assets/deals.js?body=1" type="text/javascript"></script>
which is the normal way JS is loaded in development
Upvotes: 21
Views: 10072
Reputation: 1
If the issue is still persisting after trying the above answers,
add this snippet to config/environments/development.rb in your project:
config.assets.debug = true
.
It will enable debug mode for assets to prevent concatenation and preprocessing.
After adding this, I didn't need to restart my server every time I made changes to asset files in my rails project. The changes would show immediately upon page reload.
Hope this helps!
Upvotes: 0
Reputation: 4676
Another unlikely cause is having the following config in development:
config.cache_classes = true
Although it is not the intention of the setting, it can stop modules from reloading and therefore stop the js bundle from updating without restarting the rails server as they have all been cached
Upvotes: 1
Reputation: 230
I have similar issue in my app running Rails 6 and 7. When I add console.log
into one of the javascript controllers there won't be any log in the browser console, and it looks like the console.log
is not even there.
I have been having issue for quite some time and have not been able to pinpoint the exact reason, it might be due to bundler installed globally, conflict between rvm and asdf, config for overmind, yarn or npm. But I found the 3 commands that resolve this problem for some time and I usually run them one after another
rails assets:clobber
rake tmp:cache:clear
rake assets:precompile
Upvotes: 0
Reputation: 35585
sprockets-rails
gemIn my case I upgraded to Rails 7, and for some reason, the javascript files were not updated. Spent many hours trying to work out why.
I finally discovered the culprit - in my case - somehow, I had removed the sprockets-rails
gem. I could have easily lost many months trying to figure this out.
Upvotes: 0
Reputation: 63
bundle exec rake assets:clean and then bundle exec rake assets:precompile
Upvotes: 3
Reputation: 980
Try to delete the tmp folder and then restart the server - rails s. That will do it.
Upvotes: 15
Reputation: 251
Try to clear precompiled assets:
bundle exec rake assets:clean
Upvotes: 23