2010-04-21 18 views
9

Projemi yansıtan bir ortam oluşturacak bir komisyon görevi yazmaya çalışıyorum. IRB konsolunu bir komisyon görevinden nasıl başlatırım?

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

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

"foo"

 
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 

cevap

30

yaptıklarını. Önce ARGV'yi temizlemeyi deneyin.

require 'irb' 
ARGV.clear 
IRB.start 
+0

Bu gerçekten sorun oldu! Yanıtladığınız için teşekkürler. –

+0

Teşekkürler! @MichaelLang bu cevabı zaten kabul etmelisiniz. –

+0

Ruby 2.4.0'da bunu yapmak için daha basit bir yol var; cevabımı gör. –

0

Anlaşılan Görevinizi tanımlı şekliyle ilgili bir sorun olmalı (görevin adı) var olmadığını şikayetçi IRB yol açar. Böyle görevimi çalıştırırken ben benzer bir sorun yaşadım

task :foo => :environment do 
+0

Aynı şey olup olmadığını olur . Eğer görevin adını "bar" olarak değiştirirsem, IRB bulunmadığı için "bar" ile karışır, böylece bir şekilde görev ismini toplar ve bunun için bir dosya veya klasör bulmaya çalışır. –

0

için

task :foo => [:environment] do 

değiştirirsem ne olur. Bunu varsayılan görev olarak ayarlamak sorunu çözdü ancak hataya yardımcı olmadı. İşte i IRB.start tırmık komut satırından görev adını (ler) içeriyor ARGV bakıyor

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

Komisyon dosyası içeriği aşağıdadır ve Rakefile olarak adlandırılmıştır. tırmık testi ile terminalden
Run it: konsolu tırmık testini idam ettik bir kere

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 

: konsolu, irb çıkar yukarı ve bunu sterilize en temiz yöntemini kullanarak çalıştığını görebilirsiniz.
Sanitize.clean "Bazı metin" Ruby 2.4.0 itibariyle

2

, bunu yapabilirsiniz: [: çevreyi], sadece: hiç çevreyi, ya hiç

require 'irb' 
binding.irb 
+0

bilmek güzel! Muhtemelen orijinal soruya dikkat etmeli ve Ruby 1.8 için cevapları kabul ettim. –

İlgili konular