您正在混淆经典和模块化风格 Sinatra 应用程序。
为了使用模块化风格,替换
require 'sinatra'
与
require 'sinatra/base'
这将与您的
config.ru
一起使用。如果您希望能够使用 ruby application.rb
运行您的应用程序,那么您可以在 application.rb
的末尾添加类似的内容:
if $0 == __FILE__
ABC.run!
end
这会检查当前文件是否是用于启动程序的文件,如果是,则启动运行您的应用程序的内置服务器。
当您使用
require 'sinatra'
时,Sinatra 将设置为使用经典风格。在这里,它期望在顶层定义路由,并将它们添加到 Sinatra::Application
应用程序中。当您执行 ABC
操作时,运行的是此应用程序,而不是您的 ruby application.rb
应用程序。由于此应用程序上没有定义路由,因此任何 url 都会收到 404 错误。