2010-04-21 2 views
9

내 프로젝트를 미러링하는 환경을 설정할 rake 태스크를 작성하려고합니다. 레이크 작업에서 IRB 콘솔을 시작하려면 어떻게합니까?

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 

답변

30

IRB.start는 rake 명령 줄에서 작업 이름이 들어있는 ARGV를보고 있습니다. ARGV를 먼저 지우십시오.

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

그건 실제로 문제가되었습니다! 감사합니다. –

+0

감사합니다! @MichaelLang 당신은 이미이 대답을 받아 들여야합니다. –

+0

Ruby 2.4.0에서보다 직접적인 방법이 있습니다. 내 대답을 보라. –

0

은 분명히 당신이 당신의 작업을 정의하는 방법에 문제가있을 수 있어야합니다 (작업 이름)이 존재하지 않는 것을 불평 IRB하는 리드. 당신이 그런 내 태스크를 실행할 때 나는 비슷한 문제를 했어

task :foo => :environment do 
+0

같은 일이 내가 가지고 있는지 발생 . 작업의 이름을 "bar"로 변경하면 IRB는 "bar"가 발견되지 않았다고 판단하여 작업 이름을 찾아서 파일이나 폴더를 찾으려고합니다. –

0

task :foo => [:environment] do 

을 변경하면 어떻게됩니까. 기본 작업을 설정하면 문제가 해결되었지만 버그는 도움이되지 않습니다. 여기에 : 내가 한 일

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

레이크 파일 내용은 아래에 있으며 Rakefile입니다. 레이크 테스트와 터미널에서
실행을 : 콘솔은 레이크 테스트를 실행 한 후

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 

: 콘솔, IRB 팝을하고 당신이 그것을 살균의 청소 방법을 사용하여 작동하는지 확인할 수 있습니다.
Sanitize.clean "텍스트"루비 2.4.0의로

2

, 당신은이 작업을 수행 할 수 있습니다 : [: 환경, 단지 : 모든 환경, 또는 아무것도를

require 'irb' 
binding.irb 
+0

알아두면 좋구나! 아마도 원래의 질문에 주목해야하고 Ruby 1.8에 대한 대답을 해결했습니다. –

관련 문제