Поскольку боты с хорошим поведением, по крайней мере, обычно включают ссылочный URI в строку UA, которую они отправляют, что-то вроде:
request.env["HTTP_USER_AGENT"].match(/\(.*https?:\/\/.*\)/)
- это простой способ проверить, поступил ли запрос от бота противагент пользователя.Это кажется более надежным, чем попытка сопоставления с полным списком.