2012-05-01 1 views
7

Esiste un modo per eseguire un codice che viene eseguito solo all'avvio della console? Un po 'come un file rc (.bashrc, .zshrc, ecc.)? Mi trovo sempre a fare certe cose molto.Come eseguire un codice solo quando viene avviata la console di rails, un po 'come un file rc?

Ad esempio, dove dovrei mettere questo

u = User.find_by_username('my_console_user') 

in modo che u è disponibile in rails console?

Ho fatto ricorso a questo, l'uso di $ come dichiarazione di variabile globale e l'uso dell'oscuro console do. Presumo ci sia qualcosa di più elegante in qualche modo ...

class Application < Rails::Application 
    #this is only executed in the console, also doens't seem to be documented anywhere but here: https://github.com/rails/rails/pull/3139 
    console do 
     $u1 = User.find_by_username('user1') 
     $u2 = User.find_by_username('user2') 
    end 

    end 
+0

Includere questo in un inizializzatore – apneadiving

+1

Nella console è sufficiente digitare: 'load 'foo.rb'' e verrà eseguito il contenuto di' foo.rb'. Metti lì tutto il codice necessario. – jdoe

+0

@apneadiving: quale bit? L'intera cosa? – pixelearth

risposta

3

Se si utilizza irb, è sufficiente aggiungere un metodo in ~/.irbrc (crearne uno se non esiste):

def find_by_username(username) 
    User.find_by_username('my_console_user') 
end 

Oppure aggiungi al ~/.pryrc se usi pry-rails.

Spero che questo aiuti!

+1

Cosa vogliamo che faccia parte del progetto stesso? in modo che altri sviluppatori possano avere il vantaggio? –

+0

Configura irbrc/pryrc sul controllo della versione. – juanitofatas

+0

E poi lasciare le istruzioni per l'utente per copiarlo nella loro cartella home? –