Specifically, if you do an explicit return (use the return keyword) from a
Proc, that exits the scope in which the Proc is executed. lambdas that
return do not exit the scope in which it was executed.

See http://samdanielson.com/2007/3/19/proc-new-vs-lambda-in-ruby
<http://samdanielson.com/2007/3/19/proc-new-vs-lambda-in-ruby>
--
Will Green
http://hotgazpacho.org/


On Tue, Jul 27, 2010 at 3:35 PM, Jim Deville <jdevi...@microsoft.com> wrote:

>  To pass the body proc into define_task, you need to turn it into a block
> by calling &body. I would also recommend using a lambda instead of a proc
> (due to return semantics). I'll also be turning my WIX rake tasks into a
> gem, so there will be more examples there.
>
>
>
>
> ------------------------------
> From: Goode, Troy <troy.go...@nreca.coop>
> Sent: Tuesday, July 27, 2010 11:59 AM
> To: Ironruby-core@rubyforge.org <Ironruby-core@rubyforge.org>
> Subject: [Ironruby-core] custom rake task
>
>   I was following Derek Bailey’s article from yesterday entitled “How to
> Build Custom Rake Tasks; The Right 
> Way”<http://www.lostechies.com/blogs/derickbailey/archive/2010/07/26/how-to-build-custom-rake-tasks-the-right-way.aspx>and
>  tried to replicate some of his code in IronRuby. Now I’ve run into a
> snag that I’m hoping somebody can help with.
>
>
>
> My .rb file looks like so:
>
>
>
> *require 'rake'*
>
> * *
>
> *def foo(*args)*
>
> *  body = proc {*
>
> *    puts 'hello world'*
>
> *  }*
>
> *  Rake::Task.define_task(*args, body)*
>
> *end*
>
> * *
>
> *foo :bar*
>
> * *
>
> *task :default => [:bar]*
>
>
>
> Pretty simple, right? Well, when I run it using rake, I get the following
> error:
>
>
>
> *C:\Users\txg0\Desktop>rake -f test1.rb --trace*
>
> *(in C:/Users/txg0/Desktop)*
>
> *rake aborted!*
>
> *syntax error, unexpected IDENTIFIER, expecting AMPERSAND*
>
> *C:/Program Files (x86)/IronRuby
> 1.0v4/lib/ironruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2383:in `load'*
>
> *C:/Program Files (x86)/IronRuby
> 1.0v4/lib/ironruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2383:in
> `raw_load_rakefile'*
>
> *C:/Program Files (x86)/IronRuby
> 1.0v4/lib/ironruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2017:in
> `load_rakefile'*
>
> *C:/Program Files (x86)/IronRuby
> 1.0v4/lib/ironruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2068:in
> `standard_exception_handling'*
>
> *C:/Program Files (x86)/IronRuby
> 1.0v4/lib/ironruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2016:in
> `load_rakefile'*
>
> *C:/Program Files (x86)/IronRuby
> 1.0v4/lib/ironruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2000:in `run'*
>
> *C:/Program Files (x86)/IronRuby
> 1.0v4/lib/ironruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2068:in
> `standard_exception_handling'*
>
> *C:/Program Files (x86)/IronRuby
> 1.0v4/lib/ironruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:1998:in `run'*
>
> *C:/Program Files (x86)/IronRuby
> 1.0v4/lib/ironruby/gems/1.8/gems/rake-0.8.7/bin/rake:31*
>
> *C:/Program Files (x86)/IronRuby 1.0v4/bin/rake:19:in `load'*
>
> *C:/Program Files (x86)/IronRuby 1.0v4/bin/rake:19*
>
>
>
> Anyone have any clues?
>
> Confidentiality Notice: This e-mail message, including any attachments, is
> for the sole use of the intended recipient(s) and may contain confidential
> and privileged information. Any unauthorized review, copy, use, disclosure,
> or distribution is prohibited. If you are not the intended recipient, please
> contact the sender by reply e-mail and destroy all copies of the original
> message.
>
> _______________________________________________
> Ironruby-core mailing list
> Ironruby-core@rubyforge.org
> http://rubyforge.org/mailman/listinfo/ironruby-core
>
>
_______________________________________________
Ironruby-core mailing list
Ironruby-core@rubyforge.org
http://rubyforge.org/mailman/listinfo/ironruby-core

Reply via email to