Module: Twirp::Rails

Defined in:
lib/twirp/rails/error.rb,
lib/twirp/rails/engine.rb,
lib/twirp/rails/logger.rb,
lib/twirp/rails/handler.rb,
lib/twirp/rails/version.rb,
lib/twirp/rails/callbacks.rb,
lib/twirp/rails/rescuable.rb,
lib/twirp/rails/dispatcher.rb,
lib/twirp/rails/configuration.rb,
lib/twirp/rails/rack/conditional_post.rb,
lib/twirp/rails.rb

Defined Under Namespace

Modules: Callbacks, Rack, Rescuable Classes: Configuration, Dispatcher, Engine, Error, Handler, Logger

Constant Summary collapse

VERSION =
"1.4.0"

Class Method Summary collapse

Class Method Details

.servicesObject



43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/twirp/rails/engine.rb', line 43

def services
  if @services.nil?
    @services = Twirp::Service.subclasses.map(&:new)

    # Install hooks that may be defined in the config
    @services.each do |service|
      # Add user-defined hooks
      ::Rails.application.config.twirp.service_hooks.each do |hook_name, hook|
        service.send(hook_name, &hook)
      end

      # Add our own logging hooks
      service.on_success do |env|
        if ::Rails.application.config.twirp.verbose_logging
          ::Rails.logger.debug { "Twirp Response: #{env[:output].inspect}" }
        end
      end

      service.on_error do |error, _env|
        ::Rails.logger.debug { "Twirp Response: #{error.inspect}" }
      end

      service.exception_raised do |exception, _env|
        ::Rails.logger.error { "Twirp Exception (#{exception.class}: #{exception.message})\n#{exception.backtrace.join("\n")}" }
      end
    end
  end

  @services
end