0

我被要求在 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​​ 代码,所以也许我只是缺少一些可以帮助我设置它的基本概念,所以我会很感激任何帮助 :)

非常感谢!

4

0 回答 0