我被要求在 mailcatcher 服务器中实现基本身份验证,mailcatcher 是用 Ruby 编写的,所以我用谷歌搜索了如何添加基本身份验证,我发现了这个: https ://gist.github.com/yous/40d8e18b33dfb62966c3e1e343f11a96
Mailcatcher 也使用瘦服务器,所以我复制了 use Rack::Auth::Basic 块,如下所示:
# Let Thin set itself up inside our EventMachine loop
# (Skinny/WebSockets just works on the inside)
rescue_port options[:http_port] do
Thin::Server.start(options[:http_ip], options[:http_port], Web) do
use Rack::Auth::Basic, 'Protected Area' do |username, password|
username == 'USERNAME' && password == 'PASSWORD'
end
end
puts "==> #{http_url}"
end
但是当我尝试在终端中运行 mailcatcher 时,我收到了这个错误:
/home/.../.rvm/gems/ruby-2.6.3/gems/rack-1.6.13/lib/rack/builder.rb:146:in `to_app': missing run or map statement (RuntimeError)
这发生在 Rack 的 builder.rb 文件中,在这个方法中:
def to_app
app = @map ? generate_map(@run, @map) : @run
fail "missing run or map statement" unless app
app = @use.reverse.inject(app) { |a,e| e[a] }
@warmup.call(app) if @warmup
app
end
所以似乎没有@map 或@run,如果我理解正确的话,这些是实例变量。在使用 Rack::Auth::Basic 之前有什么方法可以设置它们吗?
这是我第一次查看 ruby 代码,所以也许我只是缺少一些可以帮助我设置它的基本概念,所以我会很感激任何帮助 :)
非常感谢!