IRB.start 未启动

Som*_*Guy 5 ruby gem irb

我有一些运行 IRB.start 的代码(从 gem 内部)

但是,我在 magic-file.rb “没有这样的文件或目录@ rb_sysopen - 控制台”中收到此错误

/Users/you/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/irb/magic-file.rb:7:in `initialize': No such file or directory @ rb_sysopen - console (Errno::ENOENT)
    from /Users/you/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/irb/magic-file.rb:7:in `open'
    from /Users/you/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/irb/magic-file.rb:7:in `open'
    from /Users/you/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/irb/input-method.rb:100:in `initialize'
    from /Users/you/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/irb/context.rb:84:in `new'
    from /Users/you/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/irb/context.rb:84:in `initialize'
    from /Users/you/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/irb.rb:426:in `new'
    from /Users/you/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/irb.rb:426:in `initialize'
    from /Users/you/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/irb.rb:381:in `new'
    from /Users/you/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/irb.rb:381:in `start'
    from /Users/you/projects/mygem/lib/mygem/commands.rb:20:in `console'
Run Code Online (Sandbox Code Playgroud)

odi*_*ity 5

我想到了!通过查看代码:

我能够确定 IRB 检查 ARGV,以便您可以将命令行上的 IRB 参数传递给您在其中调用 IRB.start 的任何脚本。

但由于我试图创建一个 rake 任务来启动一个控制台,并为方便起见预加载了我的库,所以我的命令行是:

rake console
Run Code Online (Sandbox Code Playgroud)

IRB 尝试加载文件“console”,因为它假设第一个不带连字符的参数是要运行的脚本。有点烦人。(IRB.start 应该将 args 作为方法参数,以避免这种紧密耦合。)

我设法通过在 IRB.start 之前添加以下内容来修复它:

ARGV.clear
Run Code Online (Sandbox Code Playgroud)

更新:既然有人要求,这里正是使用 ARGV 的地方: