Rails ha il comando utile rails console
, che scarica tutti i dati necessari e quindi possiamo interagire con il progetto rotaie in irb
. Esiste la stessa tecnica per il progetto Ruby (costruito in linguaggio Ruby)? Con questo trucco posso giocare con il progetto Ruby nello irb
senza preoccuparmi del caricamento di librerie, moduli, classi, file e così via. Graziecarica automaticamente l'ambiente del progetto in irb
11
A
risposta
14
Il progetto deve avere un file che carichi l'ambiente. Assumendo che il progetto è in lib/project.rb poi semplicemente:
$ irb -Ilib -rproject
1
Da uno dei miei progetti:
# Creates an IRB console useful for debugging experiments
# Loads up the environment for the condition passed
def console
File.open("./tmp/irb-setup.rb", 'w') do |f|
f.puts "# Initializes the environment for IRb."
f.puts "Code to initialize your project here"
f.puts "$: << '#{File.expand_path(".")}/'" #handle load path
end
irb = RUBY_PLATFORM =~ /(:?mswin|mingw)/ ? 'irb.bat' : 'irb'
# require your code
libs = " -r irb/completion"
libs << " -r #{File.dirname(__FILE__) + "/base"}"
libs << " -r ./tmp/irb-setup.rb" # require the config file you just wrote
puts "Loading #{@options.env} environment..."
exec "#{irb} #{libs} --simple-prompt"
end
Il trucco è che si costruisce il comando IRB per autorequire tutto il codice necessario. Avevo anche bisogno di configurare alcune configurazioni, quindi aggiungo la magia di scrivere un file che richiedo in IRb.
0
Nel mio caso il mio script di inizializzazione è stato nella directory di lavoro corrente. Il sotto ha funzionato per me.
irb -r ./setup.rb
Spiegare dove inserire questa funzione nel progetto e come chiamarla. – megas
Questo tipo dipende dal modo in cui il tuo progetto è organizzato. Ho un file che contiene un'utilità della riga di comando che fa cose come generatori, server, che eseguono il codice ecc. Ma se inserisci un file 'console.rb' e alla fine aggiungi semplicemente' console', allora dovrebbe funzionare quando eseguirlo con 'ruby console.rb' dovrebbe funzionare. Dovrai personalizzarlo per soddisfare le tue esigenze, ho cercato di indicare dove. –