Я пытаюсь записать задачу граблей, которая настроит среду, зеркально отражающую мой проект.
task :environment do
require 'rubygems'
require 'sequel'
# require 'my_projects_special_files'
end
task :foo => [:environment] do
require 'irb'
IRB.start
end
Приводит к irb, жалующемуся, что "нечто" не существует (название задачи)
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
IRB.start смотрит на ARGV, который содержит имя (имена) задачи из командной строки rake. Попробуйте сначала очистить ARGV.
require 'irb'
ARGV.clear
IRB.start
Очевидно, проблема в том, как вы определили свою задачу. Что произойдет, если вы измените
task :foo => [:environment] do
на
task :foo => :environment do
У меня была похожая проблема, когда я запускал свою задачу подобным образом. Установка задачи по умолчанию решила проблему, но не помогла справиться с ошибкой. Вот: что я сделал
task :console do
exec 'irb -I lib -r startingscript.rb'
end