On Wed, Jul 9, 2008 at 10:09 PM, David Chelimsky &lt;<a href="mailto:dchelimsky@gmail.com">dchelimsky@gmail.com</a>&gt; wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div style=""><div><div class="Ih2E3d"><div>On Jul 9, 2008, at 5:52 PM, Rick DeNatale wrote:</div><br></div><div>spec:models, views, controllers and helpers are all defined already in vendor/plugins/rspec-rails/tasks/rspec.rake, so the next keyword is being invoked for all of those. You&#39;ll need to undefined them before you redefine them here.</div>
<div><br></div><div>spec_tasks.each {|t|&nbsp;Rake::Task::TASKS.delete t}</div><div><br></div><div></div></div></div></blockquote><div><br>Thanks David, I figured it was something like that.&nbsp; I had to modify it a bit since there is no TASKS constant.&nbsp; Rake::Task does have a tasks method, but it wasn&#39;t clear that deleting an element would work since it must be flattening the task namespace hierarchy.&nbsp; So I ended up with this:<br>
<br>&nbsp;begin<br>&nbsp; require RAILS_ROOT + &#39;/vendor/plugins/rspec/lib/spec/rake/spectask&#39;<br><br>&nbsp; namespace :spec do<br>&nbsp;&nbsp;&nbsp; spec_subdirs.each do |task|<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if Rake::Task.task_defined?(&quot;spec:#{task}&quot;)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Rake::Task[&quot;spec:#{task}&quot;].fail_on_error = false<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; desc &quot;Run the specs under spec/#{task}&quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Spec::Rake::SpecTask.new(task) do |t|<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t.spec_opts = [&#39;--options&#39;, &quot;\&quot;#{RAILS_ROOT}/spec/spec.opts\&quot;&quot;]<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t.spec_files = FileList[&quot;spec/#{task}/*_spec.rb&quot;]<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t.fail_on_error = false<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if Rake::Task.task_defined?(&quot;spec:#{task}:rcov&quot;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Rake::Task[&quot;spec:#{task}:rcov&quot;].fail_on_error = false<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; namespace(task) do<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Spec::Rake::SpecTask.new(:rcov) do |t|<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t.spec_opts = [&#39;--options&#39;, &quot;\&quot;#{RAILS_ROOT}/spec/spec.opts\&quot;&quot;]<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t.rcov_opts = [&#39;--include&#39;, &quot;\&quot;app/#{task}/.*.rb$\&quot;&quot;]<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t.rcov = true<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t.fail_on_error = false<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t.spec_files = FileList[&quot;spec/#{task}/*_spec.rb&quot;]<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end<br>&nbsp;&nbsp;&nbsp; end<br>&nbsp; end<br>rescue LoadError =&gt; e<br>
&nbsp; puts &quot;Spec tasks are not available - #{e}&quot;<br>end<br><br>But this still DOESN&#39;T WORK.<br><br>It turns out that this code is running BEFORE the plugin creates its tasks so those are overwriting mine.<br><br>
I&#39;m beginning to think that I need to patch RSpec to allow the default value of fail_on_error to be set with either an environment variable or in spec.opts.<br><br>Thoughts?<br></div></div>-- <br>Rick DeNatale<br><br>
My blog on Ruby<br><a href="http://talklikeaduck.denhaven2.com/">http://talklikeaduck.denhaven2.com/</a>