与do end 一起使用时抛出抛出错误

这不起作用:

run Proc.new do |env| [200, { "Content-Type" => "application/json; charset=UTF-8" }, ["{\"name\":\"Rack App\"}"]] end 

但这样做:

 run Proc.new { |env| [200, { "Content-Type" => "application/json; charset=UTF-8" }, ["{\"name\":\"Rack App\"}"]] } 

任何想法,为什么它与do..end一起使用时抛出错误?

我得到的错误:

app.ru:1:in new: tried to create Proc object without a block (ArgumentError)

您的第一个代码被解释为:

 run(Proc.new) do |env| ... end 

并且块被传递给run而不是new 。 这个问题可以通过以下方式解决:

 run(Proc.new do |env| ... end)