TypeProf is a Ruby interpreter that abstractly executes Ruby programs at the type level. It executes a given program and observes what types are passed to and returned from methods and what types are assigned to instance variables. All values are, in principle, abstracted to the class to which the object belongs, not the object itself.
$ typeprof user.rb # TypeProf 0.12.0 # Classes class User attr_accessor skip_add_role: untyped def self.from_omniauth: (?Hash[bot, bot] auth) -> User private def assign_default_role: -> nil end
$ typeprof skill.rb # TypeProf 0.12.0 # Classes class Skill private def acceptable_image: -> nil end
$ typeprof ability.rb # TypeProf 0.12.0 # Classes class Ability attr_accessor user: untyped def initialize: (untyped user) -> untyped private def alias_actions: -> untyped def register_extension_abilities: -> untyped end