我正在编写一个小型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)
出现此错误的原因是什么?
答案 0 :(得分:3)
config.ru文件的内容由Rack :: Builder处理,而不是由Ruby本身处理。具体来说,include行是在Rack :: Builder的上下文中进行评估的,它为您提供了未定义的方法。根据代码的其余部分,当您使用内部模块/类的完整路径时,您不需要包含它
run Facebook::Messenger::Server
如果您真的需要包含它,请在separete(ruby)文件中执行此操作,并在config.ru中要求该文件。