在块之前使用configure

时间:2014-06-15 22:02:51

标签: ruby sinatra

在Sinatra 1.1.0版中,我能够在configure块内使用before。在版本1.4.5中,这已不再可能。而是抛出错误。

错误:

undefined method 'configure' for #<MySinatraServer:0x3f17a60>
file: web.rb location: block in <class:MySinatraServer> line:6

班级定义:

require 'sinatra'

class MySinatraServer < Sinatra::Base

  before do
    configure :production do
      halt 404, "insecure connection not allowed" if !request.secure?
    end
  end

  get '/' do
    "Hello Cruel World"
  end

end

使用thin start运行,config.ru如下所示:

map "/" do
  run MySinatraServer
end

为什么configure不再在before block中工作?

1 个答案:

答案 0 :(得分:1)

访问configure块内的before块需要访问settings帮助器。代码现在有效。

代码在这里:

before do
  settings.configure :production do
    halt 404, "insecure connection not allowed" if !request.secure?
  end
end

另一个问题是after块现在在您halt时运行。啊升级框架版本的乐趣啊!