The generated Ruby code is not very IDE-friendly, and could be improved to support things like auto-completion. For Python, we're going in the direction of making the main generated code small and efficient but not human-readable, and generating separate .pyi files that are more human-readable and IDE-friendly. We need to figure out a plan for Ruby, though.
#7593 suggests one solution, which would be to embed code in if false blocks so that it's visible to the IDE and to human readers without changing behavior. @haberman also suggesting doing something like this:
Google::Protobuf::DescriptorPool.generated_pool.add_serialized_descriptor(
"<serialized_descriptor>"
)
# Google::Protobuf::Message defines #inherited to hook in the correct behaviors.
# This fails if #add_serialized_descriptor has not been called for "Foo."
class Foo < Google::Protobuf::Message
# The base class overrides attr_accessor to do the right thing (maybe even
# define it as a no-op if #inherited is handling the hard part.
attr_accessor :foo
end
The generated Ruby code is not very IDE-friendly, and could be improved to support things like auto-completion. For Python, we're going in the direction of making the main generated code small and efficient but not human-readable, and generating separate
.pyifiles that are more human-readable and IDE-friendly. We need to figure out a plan for Ruby, though.#7593 suggests one solution, which would be to embed code in
if falseblocks so that it's visible to the IDE and to human readers without changing behavior. @haberman also suggesting doing something like this: