Не удается запустить сервер Rack из-за NoMethodError
Я пишу крошечное приложение Sinatra (бот Facebook Messenger), поэтому я использую facebook-messenger
драгоценный камень. Вот что у меня есть в моем 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 ответ
Решение
Содержимое файла config.ru обрабатывается Rack::Builder, а не самим Ruby. В частности, строка include оценивается в контексте Rack::Builder, и это дает вам неопределенный метод. В соответствии с остальной частью кода, вам не нужно включать его, так как вы используете полный путь к внутреннему модулю / классу
run Facebook::Messenger::Server
Если вам действительно нужно включить его, сделайте это в отдельном (ruby) файле и запросите этот файл на config.ru.