我正在为Rails应用程序(Discourse)编写插件,并设置如下路由:
Discourse::Application.routes.append do
root to: 'custom#show'
end
不幸的是,Rails应用程序已经在其routes.rb
文件中定义了一系列根路由。由于首先指定了它们,所以根据“Rails Routing from the Outside In: 2.2 CRUD, Verbs, and Actions”优先考虑。
但是,在更改这样的路由设置时,我注意到记录器中有一个奇怪的记录:
Discourse::Application.routes.prepend do
root to: 'custom#show'
end
通过使用prepend
而不是append
,Rails的记录器输出现在在请求根路径/
时声明了这一点:
INFO -- : Started GET "/" …
INFO -- : Processing by CustomController#show as HTML
但是,实际上并未调用动作CustomController#show
。该应用程序的行为与以前完全相同。像记录器要求的那样,我如何让Rails调用此控制器和动作?
(这是“For routes with identical URI patterns, which is matched first?”的后续问题)
答案 0 :(得分:0)
在您的before_action
s / ApplicationController
/或继承的Discourse控制器中,可能有某种无限的外观。
您可以在请求期间使用日志记录语句和Ctrl-C
对其进行调试,以查看挂起的位置(将显示堆栈跟踪)。