【问题标题】:Irb Error: undefined method 'split'Irb 错误:未定义的方法“拆分”
【发布时间】:2014-06-22 14:18:17
【问题描述】:

我最近打开了irb,现在每次运行irb都会突然出现这个错误:

load error: /Users/addisonbean/.rvm/rubies/ruby-2.1.2/.irbrc
NoMethodError: undefined method `split' for nil:NilClass
/Users/addisonbean/.rvm/scripts/irbrc.rb:45:in `<top (required)>'
/Users/addisonbean/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
/Users/addisonbean/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
/Users/addisonbean/.rvm/rubies/ruby-2.1.2/.irbrc:11:in `<top (required)>'
/Users/addisonbean/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/irb/init.rb:236:in `load'
/Users/addisonbean/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/irb/init.rb:236:in `run_config'
/Users/addisonbean/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/irb/init.rb:19:in `setup'
irb(main):001:0>

但正如我向您展示的那样,它仍然会在所有错误之后给我提示

这是 /Users/addisonbean/.rvm/rubies/ruby-2.1.2/.irbrc 里面的所有代码(数字是行号)

8  if ENV["rvm_path"].nil?
9    require File.join(ENV["HOME"], "irbrc")
10 else
11   require File.join(ENV["rvm_path"], "scripts", "irbrc")
12 end

我没有~/.irbrcw

我希望得到一些帮助,谢谢!

【问题讨论】:

  • 您的错误消息表明 /Users/addisonbean/.rvm/rubies/ruby-2.1.2/.irbrc 至少有 11 行,这与您写的关于该文件的内容相矛盾。
  • 是的,很抱歉里面有 cmets,我会把它们添加到行号中
  • Installing Pry after 这个错误修复了这个错误...我不知道删除 Pry 并重新安装 Pry 是否有相同的效果。而且安装 Pry 后 IRB 提示看起来不一样了。

标签: ruby interpreter irb pry


【解决方案1】:

查看line 45 of rvm's scripts/irbrc.rb,我们可以发现splitpath 调用。似乎出于某种原因,您的 pathnil - 可能是因为其中一个 rescue nil 块正在运行。

我不建议破解 rvm 的内部结构,但看起来你可以通过设置环境变量 $rvm_ruby_string 来伪造它,因为 irbrc.rb 在它试图弄清楚之前会检查它。将其设置为“2.1.2”应该与它的计算结果相匹配。

【讨论】:

  • 没关系,我卸载了 2 个与 pry 相关的 gem,现在 pry 运行良好。谢谢!
【解决方案2】:

这些步骤解决了我的问题:

  • 查找当前的 ruby​​ 版本

红宝石-v

示例:

ruby 2.1.2p95(2014-05-08 修订版 45877)[x86_64-darwin13.0]

  • 删除此版本

rvm 删除 2.1.2

  • 重新安装

rvm 安装 2.1.2

【讨论】:

  • 谢谢,但我不得不重新格式化我的硬盘驱动器(不是因为这个),以便最终修复它。