Как запустить консоль IRB из граблей? - PullRequest
9 голосов
/ 21 апреля 2010

Я пытаюсь написать rake-задачу, которая создаст среду, отражающую мой проект.

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

Ответы [ 5 ]

30 голосов
/ 20 мая 2010

IRB.start просматривает ARGV, который содержит имена задач из командной строки rake.Попробуйте сначала очистить ARGV.

require 'irb'
ARGV.clear
IRB.start
2 голосов
/ 12 января 2017

Начиная с Ruby 2.4.0, вы можете сделать это:

require 'irb'
binding.irb
0 голосов
/ 03 февраля 2011

Содержимое файла рейка находится ниже и называется Rakefile.
Запустите его из терминала с тестом граблей: 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

как только вы выполните тест rake: console, появится irb, и вы увидите, что он работает, используя чистый метод Sanitize. Sanitize.clean "немного текста"

0 голосов
/ 01 мая 2010

У меня была похожая проблема при выполнении моей задачи. Установка задачи по умолчанию решила проблему, но это не помогло с ошибкой. Вот что я сделал

task :console do
  exec 'irb -I lib -r startingscript.rb'
end
0 голосов
/ 21 апреля 2010

Видимо, должна быть проблема с тем, как вы определили свою задачу. Что произойдет, если вы измените

task :foo => [:environment] do

до

task :foo => :environment do
...