由于 NoMethodError 无法启动机架服务器

Cannot start Rack server because of NoMethodError

我正在编写一个小型 Sinatra 应用程序(Facebook Messenger 机器人),所以我正在使用 facebook-messenger gem。这是我的 config.ru:

require './app'
require_relative 'bot'

require 'facebook/messenger'
include Facebook::Messenger


map '/webhook' do
  run Sinatra::Application
  run Facebook::Messenger::Server
end

但是每当我尝试使用 rackup -p 5000 命令启动我的服务器时,它 returns 我会出现以下错误:

/chatbot/config.ru:5:in `block in <main>': undefined method `include' for #<Rack::Builder:0x007feb32926e70> (NoMethodError)

出现此错误的原因是什么?

config.ru 文件的内容由 Rack::Builder 处理,而不是由 Ruby 本身处理。具体来说,包含行是在 Rack::Builder 的上下文中进行评估的,这为您提供了未定义的方法。根据其余代码,您不需要包含它,因为您使用内部 Module/Class

的完整路径
run Facebook::Messenger::Server

如果您确实需要包含它,请在单独的 (ruby) 文件中执行,并在 config.ru.

中要求该文件