由于 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.
中要求该文件
我正在编写一个小型 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.
中要求该文件