ruby on rails - ¿Rails espera que reinicie en cada cambio?
ruby-on-rails ruby-on-rails-4.1 (3)
Compruebe su archivo de desarrollo .rb, puede haber
config.cache_classes = true
En el entorno de desarrollo, el código de su aplicación se vuelve a cargar en cada solicitud. Esto ralentiza el tiempo de respuesta pero es perfecto para el desarrollo, ya que no tiene que reiniciar el servidor web cuando realiza cambios de código, simplemente haga que esto sea falso
config.cache_classes = false
Mis puntos de vista están funcionando como se esperaba; Cada vez que cambio algo, se refleja inmediatamente en la página. Pero cada vez que hago un cambio en un controlador , modelo o configuración , tengo que reiniciar el servidor para que se muestre.
Comienzo mi servidor con rails s -e development
y dice esto:
=> Booting Puma
=> Rails 4.1.8 application starting in development on http://0.0.0.0:3000
=> Run `rails server -h` for more startup options
=> Notice: server is listening on all interfaces (0.0.0.0). Consider using 127.0.0.1 (--binding option)
=> Ctrl-C to shutdown server
Mi config/environments/development.rb
ve así:
# -*- encoding : utf-8 -*-
Gvm::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 = true
# Do not eager load code on boot.
config.eager_load = false
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
:address => "smtp.gmail.com",
:port => 587,
:domain => ''gmail.com'',
:user_name => ''...'',
:password => ''...'',
:authentication => ''plain'',
:enable_starttls_auto => true
}
config.action_mailer.default_url_options = { :host => "localhost:3000" }
# Para debug apenas, é melhor que a linha abaixo seja adicionado apenas no ambiente de desenvolvimento
config.action_mailer.raise_delivery_errors = 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
# Raise an error on page load if there are pending migrations
config.active_record.migration_error = :page_load
# Debug mode disables concatenation and preprocessing of assets.
# This option may cause significant delays in view rendering with a large
# number of complex assets.
config.assets.debug = true
end
¿Alguna idea de por qué todavía tengo que reiniciarlo después de cada cambio?
Conclusión (sin solución):
Al final, seems que esto es un error de rieles y particiones montadas. Mi Vagrant VirtualBox VM monta una carpeta compartida y, al hacerlo, los rieles no pueden manejar adecuadamente la sincronización de tiempo entre el huésped y el host.
Si bien no tengo una confirmación adecuada de este problema, es lo que podría explicar la pregunta inicial.
Por favor agregue esta línea en su archivo development.rb
. Funciona para mi
config.reload_classes_only_on_change = false
NOTA: Con la configuración de VirtualBox
tenemos un problema muy conocido: seems
Solución : debe sincronizar la hora entre el host y el cliente debido a algunos cambios en Rails 4.
Rails 4.1 viene con spring
desde la caja, por lo que tal vez sea su problema. Ejecute la spring stop
y luego verifique si hay algún proceso de resorte que quede ps ax | grep spring
ps ax | grep spring
y ejecute pkill -9 spring
si existe. Reinicie los rieles y observe si la recarga funciona como se esperaba.