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

E4170fd2c3ef1ebf83e63572feb626bd?d=identicon&s=25 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
E4170fd2c3ef1ebf83e63572feb626bd?d=identicon&s=25 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
05d703f649ef1d07e78d7b479fb4c4ac?d=identicon&s=25 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
E4170fd2c3ef1ebf83e63572feb626bd?d=identicon&s=25 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
05d703f649ef1d07e78d7b479fb4c4ac?d=identicon&s=25 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 (!) :)
This topic is locked and can not be replied to.