Я ищу способ получить список всех доступных открытых методов для подклассов ActiveRecord :: Base (то есть классов модели rails).После поиска существующего ответа на этот вопрос, я удивлен, что ничего не нашел.Я попробовал "ri ActiveRecord :: Base", в котором есть хорошая документация о возможностях классов моделей и о том, как они работают, но нет списка методов экземпляров или классов;и, конечно, я попробовал поискать в Google, и мне не повезло.Я знаю, что могу запустить фрагмент кода rails, который может предоставить такой список (используя, я думаю, MyModelClass.instance_methods), но это гораздо менее удобно, чем просто использовать ri в командной строке или даже найти этот список в документации в Интернете(если он существует, и, очевидно, его нет).
Доступен ли такой список где-либо (кроме как путем извлечения его вручную из исходного кода)?Смотря так далеко, мне кажется, что это не так.(Я предполагаю, что здесь подразумевается запрос на более полную документацию по Rails, но эта тема, конечно, не относится к stackoverflow.)
(edit :) Я, вероятно, должен был упомянуть, что я знаю оавтоматически сгенерированные методы и многие методы, доступные в моделях ActiveRecord, взяты из модулей, включенных в ActiveRecord :: Base.(Я хотел не допустить, чтобы вопрос становился слишком длинным, но это было, вероятно, неразумно.) Я полагаю, что один из моих доводов заключается в том, что, поскольку ActiveRecord :: Base представляет интерфейс, имена методов, являющиеся частью этого интерфейса (IMO,конечно), в том числе из включенных модулей, должны быть включены в документацию ActiveRecord :: Base.(Разве не 'ri Array', например, перечисляет методы, которые поступают из Enumerable - например, собирают и выбирают?) Я считаю, что утомительная работа, такая как поиск документов для включенных модулей, должна выполняться нашими компьютерами и программным обеспечением, а ненами (чтобы мы могли тратить время на более важную работу, такую как разработка программного обеспечения).В любом случае, основной вопрос моего вопроса заключался в том, была ли эта информация (методы AR-модели, такие как «touch», «становится», «приращение», ...) доступна в одном удобном месте.Кажется, ответ - нет.
Спасибо за ответы, хотя.Я закончил тем, что собрал простой, наивный сценарий, который может быть полезен - он просто использует ri для получения списка включенных модулей, а затем запускает ri в основном классе и в этих модулях.(Полагаю, мне следует также включить расширенные модули.) Вот сценарий на случай, если кто-то может найти его полезным:
#!/bin/bash
# Run 'ri' on $1 and all modules included by class $1
class=$1
if [ -z "$class" ]; then exit 0; fi
set $(ri $class|col -b|awk '/Includes:/{go=1} (go && $0 ~ /^ *[A-Z]/) {print} (go && $0 ~ /^ *$/) {exit}')
ri $class|col -b
base=$(echo $class|sed 's@::[^:]*$@@')
for m; do
ri $base::$m|col -b
done