2010-07-23 9 views
5

Come faccio a sapere se i binari sono in esecuzione su un server Web, al contrario di uno script o irb?Determina se le rotaie sono in esecuzione su un server Web

Per contesto: sto monitorando un oggetto ActiveRecord e desidero inviare e-mail agli avvisi se gli oggetti vengono modificati, ma solo se le modifiche sono state apportate tramite l'interfaccia web.

+0

Si sta utilizzando la modalità di produzione a livello locale? Normalmente dovresti differenziare tra produzione/sviluppo/test per questo genere di cose. – jdeseno

+0

Di solito no, ma a volte useremo la console o lo script per cambiare materiale nel database di produzione. – rogueg

risposta

-1

ho trovato qualcosa che funziona, anche se non è molto carina

$0 # => "irb" (for script/console) 
    # => "/some/handler.fcgi" (for webserver) 
    # => "/some/script.rb" (for a script) 
0

Forse mi manca qualcosa di ovvio ma non è il fatto che se l'accesso al modello avviene tramite un'interfaccia controller (ad esempio un'azione), quindi, per definizione, un accesso attraverso un'interfaccia web?

Rotaie non funziona sotto irb. Sì, è possibile accedere agli oggetti e indicare sotto console ma non si tratta di un accesso al server Web.

Penso che sia sufficiente impostare alcuni filtri nei controller per implementare la logica di tracciamento per i modelli di interesse e quindi è possibile distinguere tra accesso generale e accesso al server Web (che è il controller avviato).

Ha senso?

+0

Hey bjg, grazie per la tua risposta. Quando dico irb, intendo console. I filtri sono un'ottima idea, ma non sono esattamente chiaro come funzionerebbe. Il controller in questione non è molto RESTful e aggiorna diversi modelli diversi. Come posso rilevare questo da un filtro? – rogueg

4

ho il compito della mia applicazione eseguendo numerosi controlli di avvio prima della messa in modo specifico come server. Nel mio caso particolare voglio assicurarmi che uno speciale record User esista nel database poiché le chiamate API fatte alla mia applicazione richiedono questo User.

ho ricorrendo a un trucco in una delle inizializzatori responsabili dei controlli di avvio:

if defined? Rails::Server 
    puts "Running as a server..." 
    # Perform checks here... 
end 
+1

Questo ha funzionato per me! –

Problemi correlati