Skip to content

Commit 43ba541

Browse files
authored
Merge pull request #10 from GetDutchie/0.6.0
v0.6.0
2 parents 9746b3a + eb296c4 commit 43ba541

File tree

9 files changed

+72
-73
lines changed

9 files changed

+72
-73
lines changed

lib/twirp/rails.rb

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,39 @@
11
# frozen_string_literal: true
2-
require "twirp/rails/rails_ext/rack/logger"
32
require "twirp/rails/logging/formatters/json"
43
require "twirp/rails/logging/formatters/key_value"
5-
require "twirp/rails/configurations/logging"
64
require "twirp/rails/configuration"
75
require 'twirp/rails/logging/adapter'
86
require 'twirp/rails/logging/subscriber'
97
require "twirp/rails/service_wrapper"
108
require "twirp/rails/helpers/hooks"
119
require "twirp/rails/helpers/services"
1210
require "twirp/rails/routes"
13-
require "twirp/rails/engine"
1411
require "twirp/rails/version"
12+
require 'active_support'
1513

1614
module Twirp
1715
module Rails
1816
class << self
17+
attr_accessor :application
18+
1919
def configuration
2020
@configuration ||= Configuration.new
2121
end
2222

2323
def configure(&block)
2424
yield configuration if block_given?
25-
setup
2625
configuration
2726
end
2827

29-
def setup
30-
if configuration.logging.log_twirp_calls
31-
if configuration.logging.log_twirp_calls.is_a?(Proc)
32-
log_twirp_calls!(&configuration.logging.log_twirp_calls)
33-
else
34-
log_twirp_calls!
35-
end
28+
def setup_logging(app)
29+
@application = app
30+
31+
require "twirp/rails/rails_ext/rack/logger"
32+
33+
if application.config.twirp.logging.log_writer.is_a?(Proc)
34+
log_twirp_calls!(&app.config.twirp.logging.log_writer)
35+
else
36+
log_twirp_calls!
3637
end
3738
end
3839

@@ -59,19 +60,22 @@ def log_twirp_calls!(&log_writer)
5960

6061
def load_handlers
6162
configuration.handlers_paths.each do |handlers_path|
62-
::Rails.application.reloader.to_prepare do
63-
Dir[File.join(handlers_path.to_s, '**', '*.rb')].sort.each { |f| require f }
64-
end
63+
Dir[File.join(handlers_path.to_s, '**', '*.rb')].sort.each {|f| require f }
6564
end
6665
end
6766

6867
def load_hooks
6968
configuration.hooks_paths.each do |hooks_path|
70-
::Rails.application.reloader.to_prepare do
71-
Dir[File.join(hooks_path.to_s, '**', '*.rb')].sort.each { |f| require f }
72-
end
69+
Dir[File.join(hooks_path.to_s, '**', '*.rb')].sort.each { |f| require f }
7370
end
7471
end
72+
73+
def application_config
74+
application.config.twirp
75+
end
7576
end
7677
end
7778
end
79+
80+
81+
require "twirp/rails/railtie" if defined?(Rails)

lib/twirp/rails/configuration.rb

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,11 @@
33
module Twirp
44
module Rails
55
class Configuration
6-
attr_reader :handlers_paths, :hooks_paths, :logging
6+
attr_accessor :handlers_paths, :hooks_paths
77

88
def initialize
99
@handlers_paths = []
1010
@hooks_paths = []
11-
@logging = Twirp::Rails::Configurations::Logging.new
1211
end
1312

1413
def add_handlers_path(path)

lib/twirp/rails/configurations/logging.rb

Lines changed: 0 additions & 30 deletions
This file was deleted.

lib/twirp/rails/engine.rb

Lines changed: 0 additions & 15 deletions
This file was deleted.

lib/twirp/rails/logging/subscriber.rb

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
# frozen_string_literal: true
22

3+
require 'active_support'
4+
require 'active_support/log_subscriber'
5+
36
module Twirp
47
module Rails
58
module Logging
@@ -20,13 +23,13 @@ def default_log_writer(event)
2023
**base_log_info(event)
2124
}
2225

23-
twirp_call_info[:params] = event.payload[:env][:input].to_h if Twirp::Rails.configuration.logging.log_params
26+
twirp_call_info[:params] = event.payload[:env][:input].to_h if Twirp::Rails.application_config.logging.log_params
2427

25-
if (exception = event.payload[:env][:exception]) && Twirp::Rails.configuration.logging.log_exceptions
28+
if (exception = event.payload[:env][:exception]) && Twirp::Rails.application_config.logging.log_exceptions
2629
twirp_call_info[:exception] = exception
2730
end
2831

29-
data = Twirp::Rails.configuration.logging.log_formatter.call(twirp_call_info)
32+
data = Twirp::Rails.application_config.logging.log_formatter.call(twirp_call_info)
3033
logger.info data
3134
end
3235

lib/twirp/rails/railtie.rb

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# frozen_string_literal: true
2+
3+
4+
require 'active_support'
5+
require 'active_support/ordered_options'
6+
require "rails/railtie"
7+
8+
module Twirp
9+
module Rails
10+
class Railtie < ::Rails::Railtie
11+
config.twirp = ActiveSupport::OrderedOptions.new
12+
config.twirp.logging = ActiveSupport::OrderedOptions.new
13+
config.twirp.logging.enabled = true
14+
config.twirp.logging.log_exceptions = false
15+
config.twirp.logging.log_params = false
16+
config.twirp.logging.log_formatter = Twirp::Rails::Logging::Formatters::KeyValue.new
17+
18+
19+
config.after_initialize do |app|
20+
Twirp::Rails.load_hooks
21+
Twirp::Rails.load_handlers
22+
Twirp::Rails::Routes.install!
23+
Twirp::Rails.setup_logging(app) if app.config.twirp.logging.enabled
24+
end
25+
end
26+
end
27+
end

lib/twirp/rails/routes.rb

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ module Twirp
44
module Rails
55
class Routes # :nodoc:
66
module Helper
7-
def use_twirp(namespace, options = {})
7+
def use_twirp(namespace, options={})
88
services = Twirp::Rails.services
99
Twirp::Rails::Routes.new(self, services).generate_routes!(namespace, options)
1010
end
@@ -46,9 +46,17 @@ def initialize(routes, services)
4646
@services = services
4747
end
4848

49-
def generate_routes!(mount_namespace, options)
49+
def generate_routes!(mount_namespace, options={})
5050
routes.scope options[:scope] || 'twirp' do
51-
@services.each do |service_wrapper:, namespace:, context: nil, hooks: []|
51+
@services.each do |service_options|
52+
service_wrapper = service_options[:service_wrapper]
53+
namespace = service_options[:namespace]
54+
context = service_options[:context]
55+
hooks = service_options[:hooks] || []
56+
57+
raise ArgumentError.new("service_wrapper must be set before binding a service.") if service_wrapper.nil?
58+
raise ArgumentError.new("namespace must be set before binding a service.") if namespace.nil?
59+
5260
next unless mount_namespace.to_sym == namespace
5361

5462
service = service_wrapper.service
@@ -71,8 +79,10 @@ def generate_routes!(mount_namespace, options)
7179
end
7280

7381
def attach_service_hooks!(service_wrapper, hooks)
74-
hooks.each do |hook_klass:, only: [], except: [], options: {}|
75-
hook_klass.attach(service_wrapper, only: only, except: except, **options)
82+
hooks.each do |hook_options|
83+
hook_klass = hook_options[:hook_klass]
84+
options = hook_options[:options] || {}
85+
hook_klass.attach(service_wrapper, **options)
7686
end
7787
end
7888
end

lib/twirp/rails/version.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
module Twirp
22
module Rails
3-
VERSION = "0.5.2"
3+
VERSION = "0.6.0"
44
end
55
end

twirp-rails.gemspec

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ Gem::Specification.new do |spec|
2323

2424
spec.required_ruby_version = '>= 2.0.0'
2525

26+
spec.add_dependency "actionpack", ">= 4.2"
2627
spec.add_dependency "activesupport", ">= 4.2"
2728
spec.add_dependency "railties", ">= 4.2"
2829
spec.add_dependency "twirp", "~> 1.7"

0 commit comments

Comments
 (0)