Как мы документируем магию extends
и магические методы как с точки зрения IDE, так и с точки зрения человека?
Я пробовал синтаксис @see
ярд, который, однако, в некоторой степени помогает, я не получаю завершение кода, как это делает нормальный extends
.
class CoolClass < BaseModel
# Not obvious from this code but the following
# actually extends CoolClassStates
extends StateManager::Resource ; state_manager
Где-то еще в классе:
...
# Fail! is actually a magic method that executes the state
# change in the state manager - there is a fail method defined
# in CoolClassStates class that implements the transition logic.
cool_class_object.fail!
...
Я также пробовал # @! метод для определения магического метода в CoolClassStates для определения магического метода fail!
. Все еще не повезло.
В настоящее время я использую Rubymine (но я предполагаю, что подобная проблема существует и для других IDE). Как добавить интеллектуальные документы в этот код, чтобы интегрированные среды разработки и, надеюсь, другие программисты могли легко определить, где находится fail
и другая логика перехода состояний?