10

我正在尝试编写一个 rake 任务,该任务将设置一个反映我的项目的环境。

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

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

导致 irb 抱怨“foo”不存在(任务名称)

10:28:01:irb_test >> rake foo --trace
(在 /Users/mwlang/projects/personal/rake/irb_test)
** 调用 foo (first_time)
** 调用环境(first_time)
** 执行环境
** 执行 foo
耙中止!
没有这样的文件或目录 - 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 `初始化'
/opt/local/lib/ruby/1.8/irb.rb:92:in `new'
/opt/local/lib/ruby/1.8/irb.rb:92:in `初始化'
/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
4

5 回答 5

31

IRB.start 正在查看包含来自 rake 命令行的任务名称的 ARGV。先尝试清除 ARGV。

require 'irb'
ARGV.clear
IRB.start
于 2010-05-20T18:18:07.933 回答
2

从 Ruby 2.4.0 开始,您可以这样做:

require 'irb'
binding.irb
于 2017-01-12T03:10:34.897 回答
1

rake 文件内容如下,它被命名为 Rakefile。
使用 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

一旦你执行了 rake test:console,irb 就会弹出,你可以看到它通过使用 Sanitize 的 clean 方法工作。
Sanitize.clean “一些文字”

于 2011-02-03T20:50:46.927 回答
1

像这样运行我的任务时,我遇到了类似的问题。将其设置为默认任务解决了该问题,但对解决该错误没有帮助。在这里:我做了什么

task :console do
  exec 'irb -I lib -r startingscript.rb'
end
于 2010-05-01T12:55:20.927 回答
0

显然,您定义任务的方式一定有问题。如果你改变会发生什么

task :foo => [:environment] do

task :foo => :environment do
于 2010-04-21T14:38:20.073 回答