2010-04-21 9 views
9

Ich versuche, eine Rake-Aufgabe zu schreiben, die eine Umgebung einrichten wird, die mein Projekt widerspiegelt.Wie starte ich die IRB-Konsole von einer Rake-Aufgabe?

task :environment do 
    require 'rubygems' 
    require 'sequel' 
    # require 'my_projects_special_files' 
end 

task :foo => [:environment] do 
    require 'irb' 
    IRB.start 
end 

führt zu beschweren IRb dass „foo“ nicht existiert (der Name der Aufgabe)

 
10:28:01:irb_test >> rake foo --trace 
(in /Users/mwlang/projects/personal/rake/irb_test) 
** Invoke foo (first_time) 
** Invoke environment (first_time) 
** Execute environment 
** Execute foo 
rake aborted! 
No such file or directory - foo 
/opt/local/lib/ruby/1.8/irb/input-method.rb:68:in `initialize' 
/opt/local/lib/ruby/1.8/irb/input-method.rb:68:in `open' 
/opt/local/lib/ruby/1.8/irb/input-method.rb:68:in `initialize' 
/opt/local/lib/ruby/1.8/irb/context.rb:80:in `new' 
/opt/local/lib/ruby/1.8/irb/context.rb:80:in `initialize' 
/opt/local/lib/ruby/1.8/irb.rb:92:in `new' 
/opt/local/lib/ruby/1.8/irb.rb:92:in `initialize' 
/opt/local/lib/ruby/1.8/irb.rb:57:in `new' 
/opt/local/lib/ruby/1.8/irb.rb:57:in `start' 
/Users/mwlang/projects/personal/rake/irb_test/Rakefile:9 

Antwort

30

IRB.start bei ARGV suchen, die den Namen der Aufgabe enthält (n) aus der Rake-Befehlszeile. Versuchen Sie zunächst, ARGV zu löschen.

+0

Das war in der Tat das Problem! Danke für die Antwort –

+0

Danke auch! @MichaelLang Du solltest diese Antwort schon annehmen. –

+0

Es gibt eine einfachere Möglichkeit, dies in Ruby 2.4.0 zu tun; Sieh meine Antwort. –

0

Offenbar muss es ein Problem mit sein, wie Sie Ihre Aufgabe definiert. Was passiert, wenn Sie

task :foo => [:environment] do 

zu

task :foo => :environment do 
+0

Gleiche passiert, ob ich [: Umwelt], nur: Umwelt, oder gar nichts . Wenn ich den Namen der Aufgabe in "bar" ändere, dann wird IRB über "bar" nicht gefunden, so dass er irgendwie den Namen der Aufgabe annimmt und versucht, eine Datei oder einen Ordner dafür zu finden. –

0

ich ein ähnliches Problem habe ändern, wenn meine Aufgabe wie das läuft. Das Einstellen der Standardaufgabe löste das Problem, aber es half nicht mit dem Fehler. Hier: was ich tat

task :console do 
    exec 'irb -I lib -r startingscript.rb' 
end 
0

Der Inhalt der Rake-Datei ist unten und es heißt Rakefile.
Run es vom Terminal mit Rake Test: console

require 'rubygems' 
require 'rake' 

namespace :test do 
desc "Test Task" 

desc "Load stuff in IRB." 
task :console do 

    exec "irb -r rubygems -r sanitize" #require multiple gems by typing -r gemname 

end 

end 

, sobald Sie den Rake Test ausgeführt haben: Konsole können irb erscheint und Sie sehen, dass es durch die Verwendung Sanitize saubere Methode funktioniert.
Sanitize.clean "some text"

2

Wie von Ruby 2.4.0, können Sie dies tun:

require 'irb' 
binding.irb 
+0

schön zu wissen! Ich sollte wahrscheinlich die ursprüngliche Frage und die angenommene Antwort für Ruby 1.8 beachten. –