简体   繁体   中英

Rails Server needs restart every time I make changes? why?

Every time I change anything in controller's or in models, I have to restart the server for it to take effect.But that wasn't always the case, it used to work normally before, when I changed anything, but i don't know what happened now ?

My Rails version is 3.2.11

In my development environment file i have set config.cache_classes = false.

Please help..

My development.rb file is as follows

Testapp::Application.configure do
  # Settings specified here will take precedence over those in config/application.rb

  # 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

  # 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

  # Do not compress assets
  config.assets.compress = false

  # Expands the lines which load the assets
  config.assets.debug = true

  config.action_mailer.default_url_options = { :host => 'localhost:3000' }

end

I have got the answer..

After adding following line in my config/environments/development.rb file my issue has been resolved.

config.reload_classes_only_on_change = false

start your server using below command in console

rails server -e development

if not started then give your rails version and which sever you use for run rails application.

more Configuration

modify your config/environments/development.rb file to:

config.serve_static_assets = false

There is a good note for VirtualBox users, posted as comment by user Ninjaxor:

For Vagrant/ virtual box users, there's a bug where if the host clock and guest clock are out of sync, it borks rails' reloader. https://github.com/rails/rails/issues/16678

The file Vagrantfile you find in a directory like this: .../ruby/gems/sass-3.4.22/vendor/listen

There you have to add this:

# Sync time every 5 seconds so code reloads properly
config.vm.provider :virtualbox do |v|
  v.customize ["guestproperty", "set", :id, "--timesync-threshold", 5000]
end

Thanks to user axsuul on GitHub!

I noticed that setting

config.cache_classes = false 

is what did the trick for me.

An additional situation where this can come up is in a virtualized environment where the files are being edited on the host operating system, and the guest operating system's file event manager doesn't generate events for file changes.

A solution for this situation is to comment out the following line in config/environments/development.rb :

# Use an evented file watcher to asynchronously detect changes in source code,
# routes, locales, etc. This feature depends on the listen gem.
config.file_watcher = ActiveSupport::EventedFileUpdateChecker

Thus giving:

# Use an evented file watcher to asynchronously detect changes in source code,
# routes, locales, etc. This feature depends on the listen gem.
# config.file_watcher = ActiveSupport::EventedFileUpdateChecker

This forces rails to actually check file modification times instead of expecting to get filesystem events.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM