Class: Protod::GrufGenerator

Inherits:
Rails::Generators::Base
  • Object
show all
Defined in:
lib/generators/protod/gruf_generator.rb

Instance Method Summary collapse

Instance Method Details

#create_gruf_controllerObject



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/generators/protod/gruf_generator.rb', line 5

def create_gruf_controller
  create_file "app/rpc/protod/handler_controller.rb", "    # frozen_string_literal: true\n\n    class Protod\n      class HandlerController < ::Gruf::Controllers::Base\n        include ::Gruf::Loggable\n\n        def self.package\n          @package ||= Protod::Rpc::Handler.find_package\n        end\n\n        bind Protod::Rpc::Handler.find_service_in(package).pb_const\n\n        def handle\n          return enum_for(:handle) unless block_given?\n\n          logger.info(\"protod/handle start\")\n          handler = Protod::Rpc::Handler.new(self.class.package)\n\n          request.messages.each do |m|\n            logger.debug(\"protod/handle receive : #\\{m\\}\")\n            yield handler.handle(m).tap { logger.debug(\"protod/handle send : #\\{_1\\}\") }\n          end\n          logger.info(\"protod/handle finished\")\n        rescue Protod::Rpc::Handler::InvalidArgument => e\n          logger.debug(\"protod/handle failed : #\\{e.message\\}\")\n          fail!(:invalid_argument, :invalid_argument, \"ERROR: #\\{e.message\\}\")\n        rescue Exception => e\n          logger.error(\"protod/handle failed : #\\{e.message\\}\\\\n#\\{e.backtrace.join(\"\\\\n\")\\}\")\n          set_debug_info(e.message, e.backtrace[0..4])\n          fail!(:internal, :internal, \"ERROR: #\\{e.message\\}\")\n        end\n      end\n    end\n  RUBY\nend\n"