IRB.start 没有开始
IRB.start not starting
我有一些运行 IRB.start 的代码(来自 gem)
但是,我在 magic-file.rb "No such file or directory @ rb_sysopen - console"
中得到了这个错误
/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'
我想通了!通过查看代码:
我能够确定 IRB 检查 ARGV,以便您可以将命令行上的 IRB args 传递给您在其中调用 IRB.start 的任何脚本。
但是由于我试图创建一个 rake 任务来启动一个控制台,为了方便起见我的库被预加载了,我的命令行是:
rake console
并且 IRB 试图加载文件 'console',因为它假设第一个没有连字符的 arg 是 运行 的脚本。有点烦人。 (IRB.start 应将 args 作为方法 arg 以避免这种紧密耦合。)
我设法通过在 IRB.start:
之前添加这个来修复它
ARGV.clear
更新:既然有人要求,这里就是使用 ARGV 的地方:
我有一些运行 IRB.start 的代码(来自 gem)
但是,我在 magic-file.rb "No such file or directory @ rb_sysopen - console"
中得到了这个错误/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'
我想通了!通过查看代码:
我能够确定 IRB 检查 ARGV,以便您可以将命令行上的 IRB args 传递给您在其中调用 IRB.start 的任何脚本。
但是由于我试图创建一个 rake 任务来启动一个控制台,为了方便起见我的库被预加载了,我的命令行是:
rake console
并且 IRB 试图加载文件 'console',因为它假设第一个没有连字符的 arg 是 运行 的脚本。有点烦人。 (IRB.start 应将 args 作为方法 arg 以避免这种紧密耦合。)
我设法通过在 IRB.start:
之前添加这个来修复它ARGV.clear
更新:既然有人要求,这里就是使用 ARGV 的地方: