Не удается запустить сервер 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.

Другие вопросы по тегам