如何修复'rake --tasks'错误:“rake aborted!undefined方法`split'代表nil:NilClass”

时间:2013-10-09 10:45:51

标签: ruby

如何阻止rake --tasks中止? “拆分”已被弃用吗?

正在输出此错误...(full trace

[rake --tasks] rake aborted!
undefined method `split' for nil:NilClass
/Users/Crimbo/.rvm/rubies/jruby-1.7.5/lib/ruby/gems/shared/gems/rake-10.1.0/lib/rake/task.rb:297:in `first_sentence'
.
.
.

有问题的行...... task.rbfull text

296    def first_sentence(string)
297      string.split(/\.[ \t]|\.$|\n/).first
298    end
299    private :first_sentence

ruby​​'1.9.3',引擎:'jruby',engine_version:'1.7.5'| rails(3.2.14)| rake(10.1.0)

2 个答案:

答案 0 :(得分:1)

不推荐使用split方法。但在你的情况下,字符串似乎是零。请检查您传递给first_sentence方法的内容。

修改

这似乎是rake gem本身的一个问题。请检查此网址

https://github.com/jimweirich/rake/issues/220

但是,宝石所有者认为这是有效的,并建议用户改为使用rake -T --all


补丁解决方案

如果您仍想使用rake --tasks,请按照 Amit Thawait 所说的内容进行操作...

to_s中使用task.rb方法,以便它不会抛出错误undefined method 'split' for nil:NilClass

def first_sentence(string)
   string.to_s.split(/\.[ \t]|\.$|\n/).first
end
private :first_sentence

答案 1 :(得分:1)

作为安全措施,您应该使用to_s方法,这样它就不会引发错误undefined method 'split' for nil:NilClass

def first_sentence(string)
  string.to_s.split(/\.[ \t]|\.$|\n/).first
end
private :first_sentence