Forum: Rails Engines development [patch] rake 0.7.3 to 0.8.x broke engines rake redefine_task

Posted by John Dell (Guest)
on 2007-12-30 08:07
(Received via mailing list)
Hi,

The collaboa site for engines is having serious problems, so I'm posting 
here.

As mentioned previously, rake 0.8.x broke the code for redefining rake 
tasks.

The problem is that in rake 0.8.x, the first argument to resolve_args 
should now be an array.  Also, last_comment was changed to 
last_description.

So, this will only work with rake 0.8.x.

Any chance to get this patch into engines /branches/rb_1.2?  Not sure 
what should be done about BC on this.  Any ideas?

Thanks,
John

--- engines.rake        2007-12-29 22:54:17.000000000 -0800
+++ engines.rake.new    2007-12-29 22:54:10.000000000 -0800
@@ -6,14 +6,14 @@
   module Rake
     module TaskManager
       def redefine_task(task_class, args, &block)
-        task_name, deps = resolve_args(args)
+        task_name, deps = resolve_args([args])
         task_name = task_class.scope_name(@scope, task_name)
         deps = [deps] unless deps.respond_to?(:to_ary)
         deps = deps.collect {|d| d.to_s }
         task = @tasks[task_name.to_s] = task_class.new(task_name, self)
         task.application = self
-        task.add_comment(@last_comment)
-        @last_comment = nil
+        task.add_description(@last_description)
+        @last_description = nil
         task.enhance(deps, &block)
         task
       end
Posted by John Dell (Guest)
on 2007-12-31 06:22
(Received via mailing list)
Replying to myself.  New patch.  Here is a simple backwards-compatible 
patch that allows this to work for rake 0.7.3 and rake 0.8.x

Feel free to DRY this up or otherwise make it prettier.

I tested this with on my rails app with both rake 0.7.3 and 0.8.1.

Thanks,
John

--- engines.rake.old    2007-12-29 22:54:17.000000000 -0800
+++ engines.rake        2007-12-30 20:16:10.000000000 -0800
@@ -6,14 +6,19 @@
   module Rake
     module TaskManager
       def redefine_task(task_class, args, &block)
-        task_name, deps = resolve_args(args)
+        task_name, deps = (RAKEVERSION >= '0.8.0') ? 
resolve_args([args]) : resolve_args(args)
         task_name = task_class.scope_name(@scope, task_name)
         deps = [deps] unless deps.respond_to?(:to_ary)
         deps = deps.collect {|d| d.to_s }
         task = @tasks[task_name.to_s] = task_class.new(task_name, self)
         task.application = self
-        task.add_comment(@last_comment)
-        @last_comment = nil
+        if RAKEVERSION >= '0.8.0'
+          task.add_description(@last_description)
+          @last_description = nil
+        else
+          task.add_comment(@last_comment)
+          @last_comment = nil
+        end
         task.enhance(deps, &block)
         task
       end
Posted by James Adam (Guest)
on 2008-01-03 13:09
(Received via mailing list)
Hi John,

Could you post this patch to the issue tracker?
http://dev.rails-engines.org - login info is on the
http://rails-engines.org website.

Thanks!

James
Posted by John Dell (Guest)
on 2008-01-03 18:28
(Received via mailing list)
Hi James,

Happy to.  Collaboa was giving errors last I tried.

On a related note, after posting to rake-devel, Jim Weirich (author of 
rake) offered to implement redefine_task within rake proper, but is 
asking for input.

Would you be kind enough to jump-in with specifics on what engines needs 
for rake redefine_task?

Here is the thread on rake list:
http://rubyforge.org/pipermail/rake-devel/2008-Jan...

Thanks!
John
Posted by James Adam (Guest)
on 2008-01-03 18:39
(Received via mailing list)
On 1/3/08, John Dell <spovich@gmail.com> wrote:
> Hi James,
>
> Happy to.  Collaboa was giving errors last I tried.

Thanks :)

> Would you be kind enough to jump-in with specifics on what engines needs for rake redefine_task?

Will do, and thanks for raising this on the rake list - it's clearly
something I should've done myself! I suppose the attitude of some of
the guardians of the Rails codebase has sunk sufficiently into my
subconscious that I no longer immediately consider feeding change
requests back to original projects (!) :)
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.