Will do. I uncivered this one when trying to use ivy4r with buildr
trunk. Turns out ivy4r causes a circular dependency in trunk but not
in 1.3.5 due to this issue. The circular dependency is caused by a
call to Buildr.projects from an after_define callback. This causes a
call to invoke on the project being defined as well triggering the
circular dependency exception. Is there a way to resolve this or
should ivy4r be tweaked so the projects call is avoided?
Pepijn
Op 15-mrt-2010 om 18:23 heeft Alex Boisvert <[email protected]>
het volgende geschreven:\
Would you mind filing a Jira issue with your spec? Just to clear
the IP.
thanks,
alex
On Mon, Mar 15, 2010 at 10:20 AM, Alex Boisvert <[email protected]
>wrote:
Wheeep! Yes, it's an issue. I'll fix it right away.
alex
On Mon, Mar 15, 2010 at 10:10 AM, Pepijn Van Eeckhoudt <
[email protected]> wrote:
I'm bumping into unpredictable behaviour related to the call chain
handling. It seems invoke_with_call_chain doesn't restore the call
chain
correctly after calling invoke. Since this is in the core of
buildr I wanted
to just check with you guys before creating an issue in jira.
invoke_with_call_chain currently does
begin
old_chain, Thread.current[:rake_chain] = Thread.current
[:rake_chain],
new_chain
execute(task_args) if needed?
ensure
Thread.current[:rake_chain] = nil
end
The ensure block seems obviously incorrect. Shouldn't this be
Thread.current[:rake_chain] = old_chain?
The following spec shows when this causes things to go wrong:
describe Buildr do
it 'should restore call chain when invoke is called' do
task1 = Rake::Task.define_task('task1') do
end
task2 = Rake::Task.define_task('task2') do
chain1 = Thread.current[:rake_chain]
task1.invoke
chain2 = Thread.current[:rake_chain]
chain2.should == chain1
end
task2.invoke
end
end
So is this an issue or intentional?
Regards,
Pepijn