Rails 3 inicializadores que rodam apenas no `rails server` e não no` rails generate`, etc
Tenho um pedaço relativamente pequeno de código inicializador que desejo executar sempre querails server
corre, mas não quando corrorails generate
, rails console
ou qualquer outro comando rails (incluindo tarefas de rake que requerem a tarefa do ambiente). Esse código preenche alguns caches e é relativamente caro, então eu realmente não quero que ele seja executado em nada além derails s
Soluções insatisfatórias:
Foreman et al. significará que será executado em um processo diferente, que é (a) exagerado para aquele pequeno pedaço de código, (b) requer comunicação entre processos, em vez da abordagem simples na memória oferecida pelo inicializado
No servidor, resolvi isso configurando o passageiro para passar uma variável de ambiente especial para os trilhos, dizendo que está sendo executado no contexto do servidor. No entanto, gostaria que fosse possível trabalhar imediatamente em todas as máquinas dos desenvolvedores sem recorrer a lembrar de executar o servidor rails de uma maneira que também forneça essa variável de ambiente (ou seja,IN_SERVER=true rails server
).
Esta pergunta sempre foi feita antes em relação à execução de um inicializador ao executar emrails server
e não emrake
. No entanto, eu quero que ele seja executado especificamente apenas na inicialização do servidor - a correção para o rake é ótima, mas não abrangent