ho un relativamente piccolo pezzo di codice di inizializzazione che voglio correre ogni volta rails server
piste, ma non quando corro rails generate
, rails console
o qualsiasi comando di altre rotaie (incluse le attività di rake che richiedono l'attività dell'ambiente). Questo pezzo di codice pre-riempie alcuni cache ed è relativamente costoso quindi ho davvero non voglio farlo girare su qualsiasi cosa, ma rails s
Rails 3 inizializzatori che girano solo su `rotaie server` e non` rotaie generate`, ecc
Soluzioni che sono insoddisfacenti:
Foreman et al. significherà che verrà eseguito su un processo diverso che è (a) sopra la parte superiore per quel piccolo pezzo di codice, (b) richiede la comunicazione tra processi invece del semplice approccio in memoria fornito dall'inizializzatore.
Sul server ho risolto questo problema configurando il passeggero per passare una variabile di ambiente speciale nei binari, dicendogli che è in esecuzione nel contesto del server. Tuttavia mi piacerebbe, se possibile, lavorare fuori dalla scatola su tutti i computer degli sviluppatori senza ricorrere a ricordare di eseguire il server di rotaie in un modo che fornirà anche quella variabile di ambiente (cioè IN_SERVER=true rails server
).
Questa domanda è sempre stata posta prima di eseguire un inizializzatore quando è in esecuzione in rails server
e non in rake
. Tuttavia, voglio che venga eseguito solo nell'inizializzazione del server: la correzione per il rake è ottima ma non completa.
mi piace molto, quindi qualcosa come '$ IN_SERVER = true se ARGV [0] == 'server'' in scrittura/rotaie è una grande soluzione. –
Non sono sicuro che il passeggero avvii Rails con 'script/rails'. Qualcuno in realtà ha avuto questo metodo per lavorare con il passeggero? – jordanpg