This is normal Ruby semantics.
Hi, the following works:
1 ::Rack::Builder.new do
2 map "/" do
3 run Proc.new { |env|
4 [ 404, {"Content-Type" => "text/plain"}), [""] ]
5 }
6 end
7 end
but the following gives an error:
1 ::Rack::Builder.new do
2 map "/" do
3 run Proc.new do |env|
4 [ 404, {"Content-Type" => "text/plain"}), [""] ]
5 end
6 end
7 end
/home/me/myfile.rb:3:in `new': tried to create Proc object without a block (ArgumentError)
from /home/me/myfile.rb:3:in `block (2 levels) in core'
from /usr/local/lib/ruby1.9/gems/1.9.1/gems/rack-1.0.0/lib/rack/builder.rb:29:in `instance_eval'
from /usr/local/lib/ruby1.9/gems/1.9.1/gems/rack-1.0.0/lib/rack/builder.rb:29:in `initialize'
from /usr/local/lib/ruby1.9/gems/1.9.1/gems/rack-1.0.0/lib/rack/builder.rb:46:in `new'
from /usr/local/lib/ruby1.9/gems/1.9.1/gems/rack-1.0.0/lib/rack/builder.rb:46:in `map'
from /root/svn_local_copies/OpenXDMS/trunk/lib/rack/core.rb:46:in `block in core'
from /usr/local/lib/ruby1.9/gems/1.9.1/gems/rack-1.0.0/lib/rack/builder.rb:29:in `instance_eval'
from /usr/local/lib/ruby1.9/gems/1.9.1/gems/rack-1.0.0/lib/rack/builder.rb:29:in `initialize'
from /home/me/myfile.rb:1:in `new'
...
It fails in ruby 1.8 and 1.9. Why cannot I use "do-end" syntax for a block
instead of "{ }". Of course, Proc.new does allow "do-end" syntax, so I wonder
if this issue has something to do with Rack itself.
Thanks.
--
Iņaki Baz Castillo <ibc@aliax.net>