Nope unfortunately you can't! This is the CAVEAT I wrote above (in the discussion).

If you hook them like you propose, then `rake` tries to lookup for the task (as a prerequisite). Unfortunately `gettext:po:update` is being defined using meta-programming when `GetText::Tools::Task.define` is called and is not available when rake lookups the tasks. That's why `#define` was called in class scope in the previous implementation.

If you hook them as a prerequisite then the sequence becomes:

 * gettext:find
   * setup
   * po:update
   * gettext:po:update

and results in an error since `setup` hasn't been called, thus a task is not defined and therefore `gettext:po:update` doesn't exist. Yes I know it's weird that `gettext:po:update` is defined dynamically and I've argued about it Gettext gem.

Now the sequence is

 * gettext:find
   * setup
   * po:update
      -  gettext:po:update

The rake lookup ends at `po:update`, `setup` is executed, a task is registered and then `po:update` invokes `gettext:po:update`.

I hope it makes sense now and I wish someone proposes a better way around this issue.