Carriles Clase de precarga en modo de desarrollo

¿Cuál es la forma correcta de precargar el modelo de Rails en modo de desarrollo?

Antecedentes: Rails 2.2, memcahe como almacén de caché.

Cuando Rails se inicia en modo de producción, primero carga y almacena en caché todos los modelos. En el modo de desarrollo, utiliza laizy loading. Es por eso que cuando almacenamos cualquier modelo en la caché de Rails, por ejemplo, Rails.cache.write (“key”, User.find (0)) en la próxima carga de la aplicación, cuando intentamos hacer Rails.cache.read (“key” ) memcache fire, ese usuario es una clase / módulo desconocido. ¿Cuál es la forma correcta de precargar la clase en esta situación?

Puedes solucionar esto haciendo algo como esto:

User if Rails.env == 'development' @user = Rails.cache.fetch("key"){ User.find(0) } 

Esto obligará a que el modelo de usuario se vuelva a cargar antes de la statement de caché. Si tiene una clase con varias declaraciones de caché, puede hacer esto:

 class SomeController [User, Profile, Project, Blog, Post] if Rails.env == 'development' def show @user = Rails.cache.fetch("user/#{params[:user_id]") do User.find(params[:user_id]) end end end 

Si está en Rails 2.xy Rails.env no funciona, siempre puede usar RAILS_ENV o ENV [‘RAILS_ENV’] en su lugar. Por supuesto, su otra opción es simplemente deshabilitar el almacenamiento en caché en su entorno de desarrollo, entonces no tiene que lidiar con este problema en absoluto.

Intereting Posts