Подтвердить что ты не робот

Rails Server необходимо перезапускать каждый раз, когда я вношу изменения? Зачем?

Каждый раз, когда я меняю что-либо в контроллере или моделях, я должен перезапустить сервер, чтобы он вступил в силу. Но это было не всегда так, как раньше, когда я что-то менял, Не знаете, что произошло сейчас?

Версия My Rails 3.2.11

В моем файле среды разработки у меня есть set config.cache_classes = false.

Пожалуйста, помогите..

Мой файл development.rb выглядит следующим образом

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

  # In the development environment your application 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
4b9b3361

Ответ 1

Я получил ответ..

После добавления следующей строки в мой файл config/environments/development.rb моя проблема была решена.

config.reload_classes_only_on_change = false

Ответ 2

Запустите свой сервер, используя приведенную ниже команду в консоли

rails server -e development

если он не запущен, укажите версию rails и используемый сервер для запуска приложения rails.

больше настроек

измените свой файл config/environments/development.rb на:

config.serve_static_assets = false

Ответ 3

Для пользователей VirtualBox есть хорошая заметка, опубликованная пользователем Ninjaxor в качестве комментария:

Для пользователей Vagrant/virtual box есть ошибка, когда часы хоста и гостевые часы не синхронизированы, это скрывает перегрузчик рельсов. https://github.com/rails/rails/issues/16678

Файл Vagrantfile вы найдете в каталоге, например: .../ruby/gems/sass-3.4.22/vendor/listen

Там вы должны добавить это:

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

Спасибо пользователю axsuul на GitHub!

Ответ 4

Я заметил, что установка

config.cache_classes = false 

вот что помогло.

Ответ 5

Дополнительная ситуация, в которой это может возникнуть, - в виртуализированной среде, где файлы редактируются в операционной системе хоста, а менеджер событий файлов гостевой операционной системы не генерирует события для изменений файлов.

Выход из этой ситуации - закомментировать следующую строку в 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

Таким образом, давая:

# 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

Это заставляет rails фактически проверять время изменения файла, а не ожидать получения событий файловой системы.