由于NoMethodError,无法启动Rack服务器

时间:2017-08-27 04:59:10

标签: ruby sinatra rack

我正在编写一个小型Sinatra应用程序(Facebook Messenger bot),所以我使用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命令启动我的服务器时,它会返回以下错误:

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

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

1 个答案:

答案 0 :(得分:3)

config.ru文件的内容由Rack :: Builder处理,而不是由Ruby本身处理。具体来说,include行是在Rack :: Builder的上下文中进行评估的,它为您提供了未定义的方法。根据代码的其余部分,当您使用内部模块/类的完整路径时,您不需要包含它

run Facebook::Messenger::Server

如果您真的需要包含它,请在separete(ruby)文件中执行此操作,并在config.ru中要求该文件。