如何忽略 Skylight 中的许多端点?

How can I ignore many endpoints in Skylight?

Skylight allows you to ignore a list of endpoints by specifying them in your skylight.yml (see Ignoring heartbeat endpoints)。但是这个列表不支持通配符,我有 很多 个端点我想忽略——我该怎么办?

这是一个解决方案——创建一个 Rake 任务以动态生成您要忽略的端点列表:

task generate_ignored_endpoints_list_for_skylight: :environment do
  Rails.application.eager_load!
  ParentController.descendants.flat_map do |controller_class|
    controller_class.action_methods.map do |method_name|
      "#{controller_class.name}##{method_name}"
    end
  end.each do |name|
    puts name
  end
end

如果您要忽略的端点分组在父控制器下(例如,Admin::ApplicationController,如果您使用 Administrate),这将很有效。