module GrpcRequiredAnnotator::ClassMethods
Attributes
_required_hash[R]
Public Instance Methods
method_added(name)
click to toggle source
Calls superclass method
# File lib/grpc_required_annotator.rb, line 24 def method_added(name) @_required_hash ||= {} if @_last_required @_required_hash[name] = @_last_required @_last_required = nil define_required_validate(name) end super end
required(*fields)
click to toggle source
# File lib/grpc_required_annotator.rb, line 12 def required(*fields) raise TypeError.new("cannot annotate `required` without GRPC::GenericService module") unless self < GRPC::GenericService @_last_required = Required.new(fields) end
required_fields(method_name)
click to toggle source
# File lib/grpc_required_annotator.rb, line 18 def required_fields(method_name) return nil unless @_required_hash[method_name] @_required_hash[method_name].fields end
Private Instance Methods
define_required_validate(name)
click to toggle source
# File lib/grpc_required_annotator.rb, line 38 def define_required_validate(name) old_name = "#{name}_".to_sym class_eval { alias_method old_name, name private old_name define_method(name) do |request, call| self.class._required_hash[name].validate!(request) send(old_name, request, call) end } end