S2 wrote:
> I am sure this is a really easy question for most of you, but i was not 
> able to find an answer to this, or to understand the difference between 
> this two:
> 
> $ irb
> irb(main):001:0> a = Proc.new {true}
> => #<Proc:0xb7cae308@(irb):1>
> irb(main):002:0> b = a.call
> => true
> irb(main):003:0> a = Proc.new {return true}
> => #<Proc:0xb7c9f768@(irb):3>
> irb(main):004:0> b = a.call
> LocalJumpError: unexpected return
>         from (irb):3
>         from (irb):4:in `call'
>         from (irb):4
>         from :0
> 
> why can't a block return something?

The result you're getting is for having a return keyword outside a 
method. If you instead do this, return will work.
---
def my_proc
     a = Proc.new {return true}
     puts "Call it"
     a.call
     puts "This will never happen"
     false
end

puts my_proc
---

=>
Call it
true


Best regards,

Jari Williamsson