Rails 3 inicializadores que se ejecutan solo en `rails server` y no en` rails generate`, etc.
Tengo un código de inicializador relativamente pequeño que quiero ejecutar siempre querails server
corre, pero no cuando corrorails generate
, rails console
o cualquier otro comando rails (incluidas las tareas de rastrillo que requieren la tarea de entorno). Este código rellena previamente algunos cachés y es relativamente costoso, así que realmente no quiero que se ejecute en nada que no searails s
Soluciones que no son satisfactorias:
Foreman et al. significará que se ejecutará en un proceso diferente que es (a) exagerado para ese pequeño fragmento de código, (b) requiere comunicación entre procesos en lugar del enfoque simple en memoria que ofrece el inicializador.
En el servidor, he resuelto esto configurando el pasajero para que pase una variable de entorno especial a los rieles, diciéndole que se está ejecutando en el contexto del servidor. Sin embargo, me gustaría, si es posible, trabajar de inmediato en todas las máquinas del desarrollador sin tener que recordar ejecutar el servidor Rails de una manera que también proporcione esa variable de entorno (es decir,IN_SERVER=true rails server
).
Esta pregunta siempre se ha hecho antes con respecto a ejecutar un inicializador cuando se ejecuta enrails server
y no enrake
. Sin embargo, quiero que se ejecute específicamente solo en la inicialización del servidor: la solución para rake es excelente, pero no es exhaustiva.