我在rspec邮件列表上问了这个问题,但没有得到答复,所以我想我会在这里试试。
在ruby 1.9.2-p180上使用rspec 1.3.2和rspec-rails 1.3.4和rails 2.3.11,当我
$ rake spec:models
他们都过去了。当我
$ rake spec:controllers
他们都过去了。当我
$ rake spec:views
他们都过去了。但是当我
$ rake spec
我得到了
<path to gem>/activesupport-2.3.11/lib/active_support/dependencies.rb:177: stack level too deep (SystemStackError)
我一直在修补rake文件,当我改变
时
t.spec_files = FileList['spec/**/*_spec.rb']
在默认任务中仅命中其中一个子目录,例如
t.spec_files = FileList['spec/models/**/*_spec.rb']
然后rake spec工作。我已经为模型,控制器和视图做了这个,并且rake规范适用于每个。但包括所有这些像
t.spec_files = FileList['spec/models/**/*_spec.rb', 'spec/controllers/**/*_spec.rb', 'spec/views/**/*_spec.rb']
不工作(与上述相同的错误)。具有讽刺意味的是,只包括模型和视图确实有效:
t.spec_files = FileList['spec/models/**/*_spec.rb', 'spec/views/**/*_spec.rb']
但似乎包括控制器在内的任何组合都会失败。这对我来说很奇怪,因为rake spec:控制器工作。除非它与文件和/或示例的数量有关。每种规格类型的文件数和示例数为
models: 25 files, 391 examples
controllers: 26 files, 973 examples
views: 52 files, 508 examples
使用rake规范确实可以在Ruby 1.8.7(-p302)和Ruby 1.9.1(-p243)上使用。
有没有人有任何想法?我可以单独运行每个组(甚至创建一个别名来一次完成所有操作),但是后来rspec必须将应用程序旋转3次。此外,这并没有解决为什么这不适用于ruby 1.9.2。
答案 0 :(得分:0)
我无法解释原因,但是当我删除
时--loadby mtime
--reverse
来自spec / spec.opts的,rake spec再次起作用。 可能与此帖[1]有关,但我不知道。
和平。