gruf 2.8.1 → 2.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9118663c1224b49c07fe40743b6766121b1be507301e4ca64f2f3e7ef18a5b25
4
- data.tar.gz: 2025ab3f6f93b8c13bdb983e869a003415d3933340e94f15eb866d65826f954b
3
+ metadata.gz: 77be459526bb01a2e709cb26663e0b2bbdc614eb28de7084a132c14d741fef66
4
+ data.tar.gz: b36e8446fd325c42b9c494370b09fd9ecd2364d5a84194683f5d9d81961dd5b2
5
5
  SHA512:
6
- metadata.gz: ffd6e423548aeb8785e7063618875298b9f13570e8e1fc6b5cf24d2426059d4e98c9d3414f179a4fd071d6b4263f279666c38ca2439dfa0e7937cc2dfa79af84
7
- data.tar.gz: 5ee7fbe4964edbda7b90192ff5432a3d61897d08896a84676ae19d5c105aab6287c48f6c02368a10c0e75d9eaa1e784f8748564cc86dc2c7bf0762106b27b4fe
6
+ metadata.gz: 9d11c575a288e18321aeee6de57b9b9c8a9db09e2c200ce3c5a50d7331e7e1af2975bcba2ae276917e0bf087bbc7c1f0726b4df13d9861bab361c66069a691f9
7
+ data.tar.gz: baed74a1e86746ae86314f4fa33065f1b0a3d9ae479c8f288f444444be24e78d76a9f0337cdcfe62b9637d53e6709cf031122cf8728bf709abaa4e6fd79ad788
data/CHANGELOG.md CHANGED
@@ -2,6 +2,17 @@ Changelog for the gruf gem. This includes internal history before the gem was ma
2
2
 
3
3
  ### Pending release
4
4
 
5
+ ### 2.9.0
6
+
7
+ - Change to racially neutral terminology across library
8
+ - blacklist->blocklist
9
+ - master->main branch
10
+ - Explicitly declare development dependencies in gemspec
11
+ - Add script/e2e test for full e2e test in regression suite
12
+ - Explicitly declare [json gem](https://rubygems.org/gems/json) dependency
13
+ - Update to Rubocop 1.4, add in rubocop-rspec for spec tests
14
+ - Add Ruby 2.7, 3.0 support
15
+
5
16
  ### 2.8.1
6
17
 
7
18
  - Fix issue with --suppress-default-interceptors not working [#95]
@@ -145,11 +156,11 @@ Gruf 2.0 is a major shift from Gruf 1.0. See [UPGRADING.md](UPGRADING.md) for de
145
156
  ### 1.2.4
146
157
 
147
158
  - Loosen explicit Protobuf dependency now that 3.4.0.2 is released
148
- - Guard against nil params in logger blacklist
159
+ - Guard against nil params in logger blocklist
149
160
 
150
161
  ### 1.2.3
151
162
 
152
- - Support nested blacklist parameters in path.to.key format
163
+ - Support nested blocklist parameters in path.to.key format
153
164
 
154
165
  ### 1.2.2
155
166
 
@@ -171,7 +182,7 @@ Gruf 2.0 is a major shift from Gruf 1.0. See [UPGRADING.md](UPGRADING.md) for de
171
182
  - Add configuration to set the error message when an uncaught exception is
172
183
  handled by gruf.
173
184
  - Add a request logging hook for Rails-style request logging, with optional
174
- parameter logging, blacklists, and formatter support
185
+ parameter logging, blocklists, and formatter support
175
186
  - Optimizations around Symbol casting within service calls
176
187
 
177
188
  ### 1.1.0
data/README.md CHANGED
@@ -1,8 +1,8 @@
1
1
  # gruf - gRPC Ruby Framework
2
2
 
3
- [![CircleCI](https://circleci.com/gh/bigcommerce/gruf/tree/master.svg?style=svg)](https://circleci.com/gh/bigcommerce/gruf/tree/master) [![Gem Version](https://badge.fury.io/rb/gruf.svg)](https://badge.fury.io/rb/gruf) [![Documentation](https://inch-ci.org/github/bigcommerce/gruf.svg?branch=master)](https://inch-ci.org/github/bigcommerce/gruf?branch=master)
3
+ [![CircleCI](https://circleci.com/gh/bigcommerce/gruf/tree/main.svg?style=svg)](https://circleci.com/gh/bigcommerce/gruf/tree/main) [![Gem Version](https://badge.fury.io/rb/gruf.svg)](https://badge.fury.io/rb/gruf) [![Documentation](https://inch-ci.org/github/bigcommerce/gruf.svg?branch=main)](https://inch-ci.org/github/bigcommerce/gruf?branch=main)
4
4
 
5
- gruf is a Ruby framework that wraps the [gRPC Ruby library](https://github.com/grpc/grpc/tree/master/src/ruby) to
5
+ gruf is a Ruby framework that wraps the [gRPC Ruby library](https://github.com/grpc/grpc/tree/main/src/ruby) to
6
6
  provide a more streamlined integration into Ruby and Ruby on Rails applications.
7
7
 
8
8
  It provides an abstracted server and client for gRPC services, along with other tools to help get gRPC services in Ruby
@@ -17,7 +17,7 @@ up fast and efficiently at scale. Some of its features include:
17
17
  still preserving gRPC BadStatus codes
18
18
  * Server and client execution timings in responses
19
19
 
20
- gruf currently has active support for gRPC 1.10.x+. gruf is compatible and tested with Ruby 2.2-2.6.
20
+ gruf currently has active support for gRPC 1.10.x+. gruf is compatible and tested with Ruby 2.2-2.7.
21
21
  gruf is also not [Rails](https://github.com/rails/rails)-specific, and can be used in any Ruby framework
22
22
  (such as [Grape](https://github.com/ruby-grape/grape) or [dry-rb](https://dry-rb.org/), for instance).
23
23
 
data/gruf.gemspec CHANGED
@@ -15,7 +15,7 @@
15
15
  # COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
16
16
  # OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
17
17
  #
18
- $:.push File.expand_path("../lib", __FILE__)
18
+ $LOAD_PATH.push File.expand_path('lib', __dir__)
19
19
  require 'gruf/version'
20
20
 
21
21
  Gem::Specification.new do |spec|
@@ -30,19 +30,37 @@ Gem::Specification.new do |spec|
30
30
  spec.homepage = 'https://github.com/bigcommerce/gruf'
31
31
 
32
32
  spec.files = Dir['README.md', 'CHANGELOG.md', 'CODE_OF_CONDUCT.md', 'lib/**/*', 'gruf.gemspec']
33
- spec.executables << 'gruf'
33
+ spec.executables << 'gruf'
34
34
  spec.require_paths = ['lib']
35
35
 
36
- spec.required_ruby_version = '~> 2.4'
36
+ spec.required_ruby_version = '>= 2.4', '< 3.1'
37
37
 
38
38
  spec.add_development_dependency 'bundler', '~> 1.11'
39
+ spec.add_development_dependency 'bundler-audit', '>= 0.6'
40
+ # rubocop:disable Gemspec/RubyVersionGlobalsUsage
41
+ spec.add_development_dependency(
42
+ 'factory_bot',
43
+ (Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.5') ? '>= 6.1' : '~> 5.2')
44
+ )
45
+ # rubocop:enable Gemspec/RubyVersionGlobalsUsage
46
+ spec.add_development_dependency 'ffaker', '>= 2.15'
47
+ spec.add_development_dependency 'pry', '~> 0.12'
48
+ spec.add_development_dependency 'pry-byebug', '>= 3.9'
39
49
  spec.add_development_dependency 'rake', '>= 10.0'
40
- spec.add_development_dependency 'pry', '~> 0.11'
50
+ spec.add_development_dependency 'rspec', '>= 3.8'
51
+ spec.add_development_dependency 'rspec_junit_formatter', '>= 0.4'
52
+ spec.add_development_dependency 'rubocop', '>= 1.0'
53
+ spec.add_development_dependency 'rubocop-performance', '>= 0.0.1'
54
+ spec.add_development_dependency 'rubocop-rspec', '>= 2.0'
55
+ spec.add_development_dependency 'rubocop-thread_safety', '>= 0.3'
56
+ spec.add_development_dependency 'simplecov', '>= 0.16'
41
57
 
42
- spec.add_runtime_dependency 'grpc', '~> 1.10'
43
- spec.add_runtime_dependency 'grpc-tools', '~> 1.10'
44
58
  spec.add_runtime_dependency 'activesupport', '> 4'
45
-
46
59
  spec.add_runtime_dependency 'concurrent-ruby', '> 1'
60
+ spec.add_runtime_dependency 'e2mmap', '~> 0.1'
61
+ spec.add_runtime_dependency 'grpc', '~> 1.10'
62
+ spec.add_runtime_dependency 'grpc-tools', '~> 1.10'
63
+ spec.add_runtime_dependency 'json', '>= 2.3'
47
64
  spec.add_runtime_dependency 'slop', '~> 4.6'
65
+ spec.add_runtime_dependency 'thwait', '~> 0.1'
48
66
  end
@@ -38,7 +38,7 @@ module Gruf
38
38
  @services = services || Gruf.services
39
39
  @hook_executor = hook_executor || Gruf::Hooks::Executor.new(hooks: Gruf.hooks&.prepare)
40
40
  @server = server || Gruf::Server.new(Gruf.server_options)
41
- @logger = logger || Gruf.logger || ::Logger.new(STDERR)
41
+ @logger = logger || Gruf.logger || ::Logger.new($stderr)
42
42
  end
43
43
 
44
44
  ##
data/lib/gruf/client.rb CHANGED
@@ -63,7 +63,7 @@ module Gruf
63
63
  @opts[:channel_credentials] = @opts.fetch(:channel_credentials, Gruf.default_channel_credentials)
64
64
  @error_factory = Gruf::Client::ErrorFactory.new
65
65
  client_options[:timeout] = client_options[:timeout].to_i if client_options.key?(:timeout)
66
- client = "#{service}::Stub".constantize.new(@opts[:hostname], build_ssl_credentials, client_options)
66
+ client = "#{service}::Stub".constantize.new(@opts[:hostname], build_ssl_credentials, **client_options)
67
67
  super(client)
68
68
  end
69
69
 
@@ -33,6 +33,7 @@ module Gruf
33
33
  #
34
34
  def initialize(error)
35
35
  @error = error
36
+ super
36
37
  end
37
38
  end
38
39
 
@@ -57,6 +58,7 @@ module Gruf
57
58
  class FailedPrecondition < Error; end
58
59
  class Internal < Error; end
59
60
  class PermissionDenied < Error; end
61
+ class ResourceExhausted < Error; end
60
62
  class Unauthenticated < Error; end
61
63
  class Unavailable < Error; end
62
64
  class Unimplemented < Error; end
@@ -98,7 +98,7 @@ module Gruf
98
98
  #
99
99
  def reset
100
100
  VALID_CONFIG_KEYS.each do |k, v|
101
- send((k.to_s + '='), v)
101
+ send("#{k}=", v)
102
102
  end
103
103
  self.interceptors = Gruf::Interceptors::Registry.new
104
104
  self.hooks = Gruf::Hooks::Registry.new
@@ -107,7 +107,7 @@ module Gruf
107
107
  self.logger = Rails.logger
108
108
  else
109
109
  require 'logger'
110
- self.logger = ::Logger.new(STDOUT)
110
+ self.logger = ::Logger.new($stdout)
111
111
  end
112
112
  self.grpc_logger = logger if grpc_logger.nil?
113
113
  self.ssl_crt_file = "#{root_path}config/ssl/#{environment}.crt"
@@ -65,7 +65,9 @@ module Gruf
65
65
  def self.bind(service)
66
66
  service_class = service.name.constantize
67
67
  Gruf.services << service_class
68
+ # rubocop:disable ThreadSafety/InstanceVariableInClassMethod
68
69
  @bound_service = service_class
70
+ # rubocop:enable ThreadSafety/InstanceVariableInClassMethod
69
71
  ServiceBinder.new(service_class).bind!(self)
70
72
  end
71
73
 
@@ -58,7 +58,7 @@ module Gruf
58
58
  # @param [Class] service The class of the service being executed against
59
59
  # @param [GRPC::RpcDesc] rpc_desc The RPC descriptor of the call
60
60
  # @param [GRPC::ActiveCall] active_call The restricted view of the call
61
- # @param [Object] message The protobuf message (or messages) of the request
61
+ # @param [Object|Google::Protobuf::MessageExts] message The protobuf message (or messages) of the request
62
62
  #
63
63
  def initialize(method_key:, service:, rpc_desc:, active_call:, message:)
64
64
  @method_key = method_key
@@ -99,21 +99,23 @@ module Gruf
99
99
  # @return [String] The parsed service method name
100
100
  #
101
101
  def method_name
102
- "#{service_key}.#{method_key}"
102
+ "#{service_key}.#{@method_key}"
103
103
  end
104
104
 
105
105
  ##
106
106
  # Return all messages for this request, properly handling different request types
107
107
  #
108
- # @return Enumerable<Object> All messages for this request
108
+ # @return [Enumerable<Object>] All messages for this request
109
109
  #
110
110
  def messages
111
111
  if client_streamer?
112
- message.call { |msg| yield msg }
112
+ # rubocop:disable Style/ExplicitBlockArgument
113
+ @message.call { |msg| yield msg }
114
+ # rubocop:enable Style/ExplicitBlockArgument
113
115
  elsif bidi_streamer?
114
- message
116
+ @message
115
117
  else
116
- [message]
118
+ [@message]
117
119
  end
118
120
  end
119
121
  end
@@ -38,7 +38,7 @@ module Gruf
38
38
  ##
39
39
  # Bind all methods on the service to the passed controller
40
40
  #
41
- # @param [Gruf::Controllers::Base] controller
41
+ # @param [Class<Gruf::Controllers::Base>] controller
42
42
  #
43
43
  def bind!(controller)
44
44
  rpc_methods.each { |name, desc| bind_method(controller, name, desc) }
data/lib/gruf/error.rb CHANGED
@@ -126,7 +126,7 @@ module Gruf
126
126
  # @return [Hash] The newly set metadata
127
127
  #
128
128
  def metadata=(metadata)
129
- @metadata = metadata.map { |k, str| [k, str.to_s] }.to_h
129
+ @metadata = metadata.transform_values(&:to_s)
130
130
  end
131
131
 
132
132
  ##
@@ -39,7 +39,7 @@ module Gruf
39
39
  @hooks.each do |hook|
40
40
  next unless hook.respond_to?(name)
41
41
 
42
- hook.send(name, arguments)
42
+ hook.send(name, **arguments)
43
43
  end
44
44
  end
45
45
  end
@@ -43,7 +43,7 @@ module Gruf
43
43
  # @param [Hash] metadata A hash of outgoing metadata
44
44
  # @return [Object] The response message
45
45
  #
46
- def request_response(request: nil, call: nil, method: nil, metadata: nil)
46
+ def request_response(request: nil, call: nil, method: nil, metadata: nil, &block)
47
47
  rc = Gruf::Outbound::RequestContext.new(
48
48
  type: :request_response,
49
49
  requests: [request],
@@ -51,9 +51,7 @@ module Gruf
51
51
  method: method,
52
52
  metadata: metadata
53
53
  )
54
- call(request_context: rc) do
55
- yield
56
- end
54
+ call(request_context: rc, &block)
57
55
  end
58
56
 
59
57
  ##
@@ -65,7 +63,7 @@ module Gruf
65
63
  # @param [Hash] metadata A hash of outgoing metadata
66
64
  # @return [Object] The response message
67
65
  #
68
- def client_streamer(requests: nil, call: nil, method: nil, metadata: nil)
66
+ def client_streamer(requests: nil, call: nil, method: nil, metadata: nil, &block)
69
67
  rc = Gruf::Outbound::RequestContext.new(
70
68
  type: :client_streamer,
71
69
  requests: requests,
@@ -73,9 +71,7 @@ module Gruf
73
71
  method: method,
74
72
  metadata: metadata
75
73
  )
76
- call(request_context: rc) do
77
- yield
78
- end
74
+ call(request_context: rc, &block)
79
75
  end
80
76
 
81
77
  ##
@@ -87,7 +83,7 @@ module Gruf
87
83
  # @param [Hash] metadata A hash of outgoing metadata
88
84
  # @return [Object] The response message
89
85
  #
90
- def server_streamer(request: nil, call: nil, method: nil, metadata: nil)
86
+ def server_streamer(request: nil, call: nil, method: nil, metadata: nil, &block)
91
87
  rc = Gruf::Outbound::RequestContext.new(
92
88
  type: :server_streamer,
93
89
  requests: [request],
@@ -95,9 +91,7 @@ module Gruf
95
91
  method: method,
96
92
  metadata: metadata
97
93
  )
98
- call(request_context: rc) do
99
- yield
100
- end
94
+ call(request_context: rc, &block)
101
95
  end
102
96
 
103
97
  ##
@@ -108,7 +102,7 @@ module Gruf
108
102
  # @param [Method] method The method being called
109
103
  # @param [Hash] metadata A hash of outgoing metadata
110
104
  #
111
- def bidi_streamer(requests: nil, call: nil, method: nil, metadata: nil)
105
+ def bidi_streamer(requests: nil, call: nil, method: nil, metadata: nil, &block)
112
106
  rc = Gruf::Outbound::RequestContext.new(
113
107
  type: :bidi_streamer,
114
108
  requests: requests,
@@ -116,9 +110,7 @@ module Gruf
116
110
  method: method,
117
111
  metadata: metadata
118
112
  )
119
- call(request_context: rc) do
120
- yield
121
- end
113
+ call(request_context: rc, &block)
122
114
  end
123
115
  end
124
116
  end
@@ -28,14 +28,14 @@ module Gruf
28
28
  #
29
29
  # @param [Array<Gruf::Interceptors::ServerInterceptor>] interceptors
30
30
  #
31
- def initialize(interceptors = [])
32
- @interceptors = interceptors
31
+ def initialize(interceptors = nil)
32
+ @interceptors = interceptors || []
33
33
  end
34
34
 
35
35
  ##
36
36
  # Intercept the given request and run interceptors in a FIFO execution order
37
37
  #
38
- def intercept!
38
+ def intercept!(&block)
39
39
  return yield if @interceptors.none?
40
40
 
41
41
  i = @interceptors.pop
@@ -45,7 +45,7 @@ module Gruf
45
45
 
46
46
  i.call do
47
47
  if @interceptors.any?
48
- intercept! { yield }
48
+ intercept!(&block)
49
49
  else
50
50
  yield
51
51
  end
@@ -27,12 +27,10 @@ module Gruf
27
27
  ##
28
28
  # Handle the instrumented response. Note: this will only instrument timings of _successful_ responses.
29
29
  #
30
- def call
30
+ def call(&block)
31
31
  return unless active_call.respond_to?(:output_metadata)
32
32
 
33
- result = Gruf::Interceptors::Timer.time do
34
- yield
35
- end
33
+ result = Gruf::Interceptors::Timer.time(&block)
36
34
  output_metadata.update(metadata_key => result.elapsed.to_s)
37
35
 
38
36
  raise result.message unless result.successful?
@@ -61,12 +61,10 @@ module Gruf
61
61
  #
62
62
  # @return [String]
63
63
  #
64
- def call
65
- return yield if options.fetch(:ignore_methods, []).include?(request.method_name)
64
+ def call(&block)
65
+ return yield if options.fetch(:ignore_methods, [])&.include?(request.method_name)
66
66
 
67
- result = Gruf::Interceptors::Timer.time do
68
- yield
69
- end
67
+ result = Gruf::Interceptors::Timer.time(&block)
70
68
 
71
69
  # Fetch log level options and merge with default...
72
70
  log_level_map = LOG_LEVEL_MAP.merge(options.fetch(:log_levels, {}))
@@ -113,7 +111,7 @@ module Gruf
113
111
  # @return [::Gruf::Logger]
114
112
  #
115
113
  def logger
116
- @logger ||= options.fetch(:logger, ::Gruf.logger)
114
+ @logger ||= (options.fetch(:logger, nil) || Gruf.logger)
117
115
  end
118
116
 
119
117
  ##
@@ -164,26 +162,26 @@ module Gruf
164
162
  end
165
163
 
166
164
  ##
167
- # Redact any blacklisted params and return an updated hash
165
+ # Redact any blocklisted params and return an updated hash
168
166
  #
169
167
  # @param [Hash] params The hash of parameters to sanitize
170
168
  # @return [Hash] The sanitized params in hash form
171
169
  #
172
170
  def sanitize(params = {})
173
- blacklists = options.fetch(:blacklist, []).map(&:to_s)
174
- redacted_string = options.fetch(:redacted_string, 'REDACTED')
175
- blacklists.each do |blacklist|
176
- parts = blacklist.split('.').map(&:to_sym)
171
+ blocklists = (options.fetch(:blocklist, []) || []).map(&:to_s)
172
+ redacted_string = options.fetch(:redacted_string, nil) || 'REDACTED'
173
+ blocklists.each do |blocklist|
174
+ parts = blocklist.split('.').map(&:to_sym)
177
175
  redact!(parts, 0, params, redacted_string)
178
176
  end
179
177
  params
180
178
  end
181
179
 
182
180
  ##
183
- # Helper method to recursively redact based on the black list
181
+ # Helper method to recursively redact based on the blocklist
184
182
  #
185
- # @param [Array] parts The blacklist. ex. 'data.schema' -> [:data, :schema]
186
- # @param [Integer] idx The current index of the blacklist
183
+ # @param [Array] parts The blocklist. ex. 'data.schema' -> [:data, :schema]
184
+ # @param [Integer] idx The current index of the blocklist
187
185
  # @param [Hash] params The hash of parameters to sanitize
188
186
  # @param [String] redacted_string The custom redact string
189
187
  #
@@ -25,7 +25,7 @@ module Gruf
25
25
  ##
26
26
  # Push data to StatsD, only doing so if a client is set
27
27
  #
28
- def call
28
+ def call(&block)
29
29
  unless client
30
30
  Gruf.logger.error 'Statsd module loaded, but no client configured!'
31
31
  return yield
@@ -33,9 +33,7 @@ module Gruf
33
33
 
34
34
  client.increment(route_key)
35
35
 
36
- result = Gruf::Interceptors::Timer.time do
37
- yield
38
- end
36
+ result = Gruf::Interceptors::Timer.time(&block)
39
37
 
40
38
  client.increment("#{route_key}.#{postfix(result.successful?)}")
41
39
  client.timing(route_key, result.elapsed)
@@ -24,9 +24,12 @@ module Gruf
24
24
  ##
25
25
  # Represents a timed result for an interceptor
26
26
  #
27
+ # @property [Object] message The protobuf message
28
+ # @property [Float] elapsed The elapsed time of the request
29
+ #
27
30
  class Result
28
- attr_reader :message
29
- attr_reader :elapsed
31
+ attr_reader :message,
32
+ :elapsed
30
33
 
31
34
  ##
32
35
  # @param [Object] message The protobuf message
data/lib/gruf/server.rb CHANGED
@@ -69,9 +69,9 @@ module Gruf
69
69
 
70
70
  server = if @event_listener_proc
71
71
  server_options[:event_listener_proc] = @event_listener_proc
72
- Gruf::InstrumentableGrpcServer.new(server_options)
72
+ Gruf::InstrumentableGrpcServer.new(**server_options)
73
73
  else
74
- GRPC::RpcServer.new(server_options)
74
+ GRPC::RpcServer.new(**server_options)
75
75
  end
76
76
 
77
77
  @port = server.add_http2_port(@hostname, ssl_credentials)
data/lib/gruf/timer.rb CHANGED
@@ -29,11 +29,12 @@ module Gruf
29
29
  # result.time # => 1.10123
30
30
  # result.result # => 'my_thing_is_done'
31
31
  #
32
+ # @property [Object] result The result of the block that was called
33
+ # @property [Float] time The time, in ms, of the block execution
34
+ #
32
35
  class Result
33
- # @return [Object] result The result of the block that was called
34
- attr_reader :result
35
- # @return [Float] time The time, in ms, of the block execution
36
- attr_reader :time
36
+ attr_reader :result,
37
+ :time
37
38
 
38
39
  ##
39
40
  # Initialize the result object
data/lib/gruf/version.rb CHANGED
@@ -16,5 +16,5 @@
16
16
  # OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
17
17
  #
18
18
  module Gruf
19
- VERSION = '2.8.1'
19
+ VERSION = '2.9.0'
20
20
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gruf
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.8.1
4
+ version: 2.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shaun McCormick
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-03-11 00:00:00.000000000 Z
11
+ date: 2021-03-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -25,61 +25,187 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.11'
27
27
  - !ruby/object:Gem::Dependency
28
- name: rake
28
+ name: bundler-audit
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '10.0'
33
+ version: '0.6'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: '10.0'
40
+ version: '0.6'
41
+ - !ruby/object:Gem::Dependency
42
+ name: factory_bot
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '6.1'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '6.1'
55
+ - !ruby/object:Gem::Dependency
56
+ name: ffaker
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '2.15'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '2.15'
41
69
  - !ruby/object:Gem::Dependency
42
70
  name: pry
43
71
  requirement: !ruby/object:Gem::Requirement
44
72
  requirements:
45
73
  - - "~>"
46
74
  - !ruby/object:Gem::Version
47
- version: '0.11'
75
+ version: '0.12'
48
76
  type: :development
49
77
  prerelease: false
50
78
  version_requirements: !ruby/object:Gem::Requirement
51
79
  requirements:
52
80
  - - "~>"
53
81
  - !ruby/object:Gem::Version
54
- version: '0.11'
82
+ version: '0.12'
55
83
  - !ruby/object:Gem::Dependency
56
- name: grpc
84
+ name: pry-byebug
57
85
  requirement: !ruby/object:Gem::Requirement
58
86
  requirements:
59
- - - "~>"
87
+ - - ">="
60
88
  - !ruby/object:Gem::Version
61
- version: '1.10'
62
- type: :runtime
89
+ version: '3.9'
90
+ type: :development
63
91
  prerelease: false
64
92
  version_requirements: !ruby/object:Gem::Requirement
65
93
  requirements:
66
- - - "~>"
94
+ - - ">="
67
95
  - !ruby/object:Gem::Version
68
- version: '1.10'
96
+ version: '3.9'
69
97
  - !ruby/object:Gem::Dependency
70
- name: grpc-tools
98
+ name: rake
71
99
  requirement: !ruby/object:Gem::Requirement
72
100
  requirements:
73
- - - "~>"
101
+ - - ">="
74
102
  - !ruby/object:Gem::Version
75
- version: '1.10'
76
- type: :runtime
103
+ version: '10.0'
104
+ type: :development
77
105
  prerelease: false
78
106
  version_requirements: !ruby/object:Gem::Requirement
79
107
  requirements:
80
- - - "~>"
108
+ - - ">="
81
109
  - !ruby/object:Gem::Version
82
- version: '1.10'
110
+ version: '10.0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: rspec
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '3.8'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '3.8'
125
+ - !ruby/object:Gem::Dependency
126
+ name: rspec_junit_formatter
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0.4'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0.4'
139
+ - !ruby/object:Gem::Dependency
140
+ name: rubocop
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '1.0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '1.0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: rubocop-performance
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: 0.0.1
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: 0.0.1
167
+ - !ruby/object:Gem::Dependency
168
+ name: rubocop-rspec
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ version: '2.0'
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ version: '2.0'
181
+ - !ruby/object:Gem::Dependency
182
+ name: rubocop-thread_safety
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - ">="
186
+ - !ruby/object:Gem::Version
187
+ version: '0.3'
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - ">="
193
+ - !ruby/object:Gem::Version
194
+ version: '0.3'
195
+ - !ruby/object:Gem::Dependency
196
+ name: simplecov
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - ">="
200
+ - !ruby/object:Gem::Version
201
+ version: '0.16'
202
+ type: :development
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - ">="
207
+ - !ruby/object:Gem::Version
208
+ version: '0.16'
83
209
  - !ruby/object:Gem::Dependency
84
210
  name: activesupport
85
211
  requirement: !ruby/object:Gem::Requirement
@@ -108,6 +234,62 @@ dependencies:
108
234
  - - ">"
109
235
  - !ruby/object:Gem::Version
110
236
  version: '1'
237
+ - !ruby/object:Gem::Dependency
238
+ name: e2mmap
239
+ requirement: !ruby/object:Gem::Requirement
240
+ requirements:
241
+ - - "~>"
242
+ - !ruby/object:Gem::Version
243
+ version: '0.1'
244
+ type: :runtime
245
+ prerelease: false
246
+ version_requirements: !ruby/object:Gem::Requirement
247
+ requirements:
248
+ - - "~>"
249
+ - !ruby/object:Gem::Version
250
+ version: '0.1'
251
+ - !ruby/object:Gem::Dependency
252
+ name: grpc
253
+ requirement: !ruby/object:Gem::Requirement
254
+ requirements:
255
+ - - "~>"
256
+ - !ruby/object:Gem::Version
257
+ version: '1.10'
258
+ type: :runtime
259
+ prerelease: false
260
+ version_requirements: !ruby/object:Gem::Requirement
261
+ requirements:
262
+ - - "~>"
263
+ - !ruby/object:Gem::Version
264
+ version: '1.10'
265
+ - !ruby/object:Gem::Dependency
266
+ name: grpc-tools
267
+ requirement: !ruby/object:Gem::Requirement
268
+ requirements:
269
+ - - "~>"
270
+ - !ruby/object:Gem::Version
271
+ version: '1.10'
272
+ type: :runtime
273
+ prerelease: false
274
+ version_requirements: !ruby/object:Gem::Requirement
275
+ requirements:
276
+ - - "~>"
277
+ - !ruby/object:Gem::Version
278
+ version: '1.10'
279
+ - !ruby/object:Gem::Dependency
280
+ name: json
281
+ requirement: !ruby/object:Gem::Requirement
282
+ requirements:
283
+ - - ">="
284
+ - !ruby/object:Gem::Version
285
+ version: '2.3'
286
+ type: :runtime
287
+ prerelease: false
288
+ version_requirements: !ruby/object:Gem::Requirement
289
+ requirements:
290
+ - - ">="
291
+ - !ruby/object:Gem::Version
292
+ version: '2.3'
111
293
  - !ruby/object:Gem::Dependency
112
294
  name: slop
113
295
  requirement: !ruby/object:Gem::Requirement
@@ -122,6 +304,20 @@ dependencies:
122
304
  - - "~>"
123
305
  - !ruby/object:Gem::Version
124
306
  version: '4.6'
307
+ - !ruby/object:Gem::Dependency
308
+ name: thwait
309
+ requirement: !ruby/object:Gem::Requirement
310
+ requirements:
311
+ - - "~>"
312
+ - !ruby/object:Gem::Version
313
+ version: '0.1'
314
+ type: :runtime
315
+ prerelease: false
316
+ version_requirements: !ruby/object:Gem::Requirement
317
+ requirements:
318
+ - - "~>"
319
+ - !ruby/object:Gem::Version
320
+ version: '0.1'
125
321
  description: gRPC Ruby Framework for building complex gRPC applications at scale
126
322
  email:
127
323
  - splittingred@gmail.com
@@ -181,23 +377,26 @@ homepage: https://github.com/bigcommerce/gruf
181
377
  licenses:
182
378
  - MIT
183
379
  metadata: {}
184
- post_install_message:
380
+ post_install_message:
185
381
  rdoc_options: []
186
382
  require_paths:
187
383
  - lib
188
384
  required_ruby_version: !ruby/object:Gem::Requirement
189
385
  requirements:
190
- - - "~>"
386
+ - - ">="
191
387
  - !ruby/object:Gem::Version
192
388
  version: '2.4'
389
+ - - "<"
390
+ - !ruby/object:Gem::Version
391
+ version: '3.1'
193
392
  required_rubygems_version: !ruby/object:Gem::Requirement
194
393
  requirements:
195
394
  - - ">="
196
395
  - !ruby/object:Gem::Version
197
396
  version: '0'
198
397
  requirements: []
199
- rubygems_version: 3.0.6
200
- signing_key:
398
+ rubygems_version: 3.0.9
399
+ signing_key:
201
400
  specification_version: 4
202
401
  summary: gRPC Ruby Framework
203
402
  test_files: []