我有一个Ruby on Rails和ActiveAdmin应用程序。除了添加和注册几个模型之外,我基本上没有更改任何默认配置。
我希望使用类似GET /heartbeat
的路由启用我的应用程序,并使用简单的字符串响应客户端/用户。我想知道如何才能执行以下步骤:
routes.rb
文件添加自定义路由。app/controllers
路径下添加自定义控制器。答案 0 :(得分:8)
routes.rb中:
get 'heartbeat' => "custom_controller#heartbeat"
custom_controller.rb:
class CustomController < ApplicationController
def heartbeat
render inline: "Some string to the client/user"
end
end
答案 1 :(得分:3)
避免使用Rails渲染堆栈可以节省一些处理速度并加快速度。您可以通过一个返回响应代码的简单Rack“应用程序”在路由器级别执行此操作:
get 'heartbeat', to: proc { [204, {}, []] }
响应call
并返回[status, headers, body]
的任何内容都符合机架标准,因此您可以在路由器中利用proc来做到这一点。在这种情况下,我们发送的204 No Content
应该足以用于心跳,但您始终可以返回自定义数据/标头。
<强>更新强>
我只能想象这被低估了,因为人们不明白为什么这样更好。这是一个快速尝试解释:
如果不清楚,使用此方法根本不需要控制器操作。这是接受答案的等效解决方案:
get 'heartbeat', to: proc { [200, {}, ['Some string to the client/user']] }
在Rails routes.rb
文件中粘贴该行将等同于创建一个新的控制器,视图和路由条目,只有一个关键区别:它避免了Rails响应呈现堆栈所以应该比公认的解决方案快得多。