ruby-on-rails ruby ruby-on-rails-4.1

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.