railway-ipc 0.1.7 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (52) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +4 -3
  3. data/CHANGELOG.MD +35 -3
  4. data/Gemfile +2 -2
  5. data/Rakefile +10 -4
  6. data/bin/console +3 -3
  7. data/bin/rspec +29 -0
  8. data/bin/rubocop +29 -0
  9. data/lib/railway_ipc.rb +6 -4
  10. data/lib/railway_ipc/Rakefile +2 -0
  11. data/lib/railway_ipc/consumer/consumer.rb +18 -69
  12. data/lib/railway_ipc/consumer/consumer_response_handlers.rb +2 -0
  13. data/lib/railway_ipc/consumer/process_incoming_message.rb +105 -0
  14. data/lib/railway_ipc/errors.rb +9 -1
  15. data/lib/railway_ipc/handler.rb +2 -0
  16. data/lib/railway_ipc/handler_manifest.rb +2 -0
  17. data/lib/railway_ipc/handler_store.rb +3 -0
  18. data/lib/railway_ipc/incoming_message.rb +51 -0
  19. data/lib/railway_ipc/logger.rb +4 -3
  20. data/lib/railway_ipc/models/consumed_message.rb +40 -34
  21. data/lib/railway_ipc/models/published_message.rb +11 -9
  22. data/lib/railway_ipc/publisher.rb +41 -13
  23. data/lib/railway_ipc/rabbitmq/adapter.rb +23 -15
  24. data/lib/railway_ipc/rabbitmq/payload.rb +9 -4
  25. data/lib/railway_ipc/railtie.rb +2 -0
  26. data/lib/railway_ipc/responder.rb +6 -3
  27. data/lib/railway_ipc/response.rb +4 -1
  28. data/lib/railway_ipc/rpc/client/client.rb +27 -17
  29. data/lib/railway_ipc/rpc/client/client_response_handlers.rb +2 -0
  30. data/lib/railway_ipc/rpc/client/errors/timeout_error.rb +2 -0
  31. data/lib/railway_ipc/rpc/concerns/error_adapter_configurable.rb +2 -0
  32. data/lib/railway_ipc/rpc/concerns/message_observation_configurable.rb +2 -0
  33. data/lib/railway_ipc/rpc/concerns/publish_location_configurable.rb +2 -0
  34. data/lib/railway_ipc/rpc/rpc.rb +2 -0
  35. data/lib/railway_ipc/rpc/server/server.rb +10 -3
  36. data/lib/railway_ipc/rpc/server/server_response_handlers.rb +2 -0
  37. data/lib/railway_ipc/tasks/generate_migrations.rake +16 -16
  38. data/lib/railway_ipc/tasks/start_consumers.rake +3 -1
  39. data/lib/railway_ipc/tasks/start_servers.rake +3 -1
  40. data/lib/railway_ipc/unhandled_message_error.rb +2 -0
  41. data/lib/railway_ipc/unknown_message.pb.rb +18 -0
  42. data/lib/railway_ipc/version.rb +3 -1
  43. data/priv/migrations/add_railway_ipc_consumed_messages.rb +3 -1
  44. data/priv/migrations/add_railway_ipc_published_messages.rb +3 -1
  45. data/railway_ipc.gemspec +33 -30
  46. metadata +60 -60
  47. data/.rspec +0 -3
  48. data/.travis.yml +0 -7
  49. data/Gemfile.lock +0 -186
  50. data/lib/railway_ipc/base_message.pb.rb +0 -21
  51. data/lib/railway_ipc/null_handler.rb +0 -7
  52. data/lib/railway_ipc/null_message.rb +0 -7
@@ -1,7 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RailwayIpc
2
4
  class Response
3
5
  attr_reader :body, :success
4
- def initialize(message, success:true)
6
+
7
+ def initialize(message, success: true)
5
8
  @body = message
6
9
  @success = success
7
10
  end
@@ -1,12 +1,15 @@
1
- require "railway_ipc/rpc/client/client_response_handlers"
2
- require "railway_ipc/rpc/concerns/publish_location_configurable"
3
- require "railway_ipc/rpc/concerns/error_adapter_configurable"
4
- require "railway_ipc/rpc/client/errors/timeout_error"
1
+ # frozen_string_literal: true
2
+
3
+ require 'railway_ipc/rpc/client/client_response_handlers'
4
+ require 'railway_ipc/rpc/concerns/publish_location_configurable'
5
+ require 'railway_ipc/rpc/concerns/error_adapter_configurable'
6
+ require 'railway_ipc/rpc/client/errors/timeout_error'
5
7
 
6
8
  module RailwayIpc
7
9
  class Client
8
10
  attr_accessor :response_message, :request_message
9
11
  attr_reader :rabbit_connection, :message
12
+
10
13
  extend RailwayIpc::RPC::PublishLocationConfigurable
11
14
  extend RailwayIpc::RPC::ErrorAdapterConfigurable
12
15
 
@@ -18,12 +21,12 @@ module RailwayIpc
18
21
  RPC::ClientResponseHandlers.instance.register(response_type)
19
22
  end
20
23
 
21
- def initialize(request_message, opts = { automatic_recovery: false }, rabbit_adapter: RailwayIpc::Rabbitmq::Adapter)
24
+ def initialize(request_message, opts={ automatic_recovery: false }, rabbit_adapter: RailwayIpc::Rabbitmq::Adapter)
22
25
  @rabbit_connection = rabbit_adapter.new(exchange_name: self.class.exchange_name, options: opts)
23
26
  @request_message = request_message
24
27
  end
25
28
 
26
- def request(timeout = 10)
29
+ def request(timeout=10)
27
30
  setup_rabbit_connection
28
31
  attach_reply_queue_to_message
29
32
  publish_message
@@ -35,18 +38,20 @@ module RailwayIpc
35
38
  RailwayIpc::RPC::ClientResponseHandlers.instance.registered
36
39
  end
37
40
 
41
+ # rubocop:disable Metrics/AbcSize
38
42
  def process_payload(response)
39
43
  decoded_payload = decode_payload(response)
40
44
  case decoded_payload.type
41
45
  when *registered_handlers
42
46
  @message = get_message_class(decoded_payload).decode(decoded_payload.message)
43
- RailwayIpc.logger.info(message, "Handling response")
47
+ RailwayIpc.logger.info(message, 'Handling response')
44
48
  RailwayIpc::Response.new(message, success: true)
45
49
  else
46
50
  @message = LearnIpc::ErrorMessage.decode(decoded_payload.message)
47
- raise RailwayIpc::UnhandledMessageError, "#{self.class} does not know how to handle #{decoded_payload.type}"
51
+ raise RailwayIpc::UnhandledMessageError.new("#{self.class} does not know how to handle #{decoded_payload.type}")
48
52
  end
49
53
  end
54
+ # rubocop:enable Metrics/AbcSize
50
55
 
51
56
  def setup_rabbit_connection
52
57
  rabbit_connection
@@ -60,7 +65,9 @@ module RailwayIpc
60
65
  self.response_message = process_payload(payload)
61
66
  end
62
67
  rescue RailwayIpc::Rabbitmq::Adapter::TimeoutError
68
+ # rubocop:disable Style/RedundantSelf
63
69
  error = self.class.rpc_error_adapter_class.error_message(TimeoutError.new, self.request_message)
70
+ # rubocop:enable Style/RedundantSelf
64
71
  self.response_message = RailwayIpc::Response.new(error, success: false)
65
72
  rescue StandardError
66
73
  self.response_message = RailwayIpc::Response.new(message, success: false)
@@ -70,12 +77,12 @@ module RailwayIpc
70
77
 
71
78
  private
72
79
 
73
- def log_exception(e, payload)
80
+ def log_exception(exception, payload)
74
81
  RailwayIpc.logger.log_exception(
75
- feature: "railway_consumer",
76
- error: e.class,
77
- error_message: e.message,
78
- payload: decode_for_error(e, payload),
82
+ feature: 'railway_consumer',
83
+ error: exception.class,
84
+ error_message: exception.message,
85
+ payload: decode_for_error(exception, payload)
79
86
  )
80
87
  end
81
88
 
@@ -92,13 +99,16 @@ module RailwayIpc
92
99
  end
93
100
 
94
101
  def publish_message
95
- RailwayIpc.logger.info(request_message, "Sending request")
96
- rabbit_connection.publish(RailwayIpc::Rabbitmq::Payload.encode(request_message), routing_key: "")
102
+ RailwayIpc.logger.info(request_message, 'Sending request')
103
+ rabbit_connection.publish(RailwayIpc::Rabbitmq::Payload.encode(request_message), routing_key: '')
97
104
  end
98
105
 
99
- def decode_for_error(e, payload)
100
- return e.message unless payload
106
+ def decode_for_error(exception, payload)
107
+ return exception.message unless payload
108
+
109
+ # rubocop:disable Style/RedundantSelf
101
110
  self.class.rpc_error_adapter_class.error_message(payload, self.request_message)
111
+ # rubocop:enable Style/RedundantSelf
102
112
  end
103
113
  end
104
114
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RailwayIpc
2
4
  module RPC
3
5
  class ClientResponseHandlers
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RailwayIpc
2
4
  class Client
3
5
  class TimeoutError < StandardError; end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RailwayIpc
2
4
  module RPC
3
5
  module ErrorAdapterConfigurable
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RailwayIpc
2
4
  module RPC
3
5
  module MessageObservationConfigurable
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RailwayIpc
2
4
  module RPC
3
5
  module PublishLocationConfigurable
@@ -1,2 +1,4 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'railway_ipc/rpc/client/client'
2
4
  require 'railway_ipc/rpc/server/server'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'railway_ipc/rpc/server/server_response_handlers'
2
4
  require 'railway_ipc/rpc/concerns/error_adapter_configurable'
3
5
  require 'railway_ipc/rpc/concerns/message_observation_configurable'
@@ -12,7 +14,7 @@ module RailwayIpc
12
14
  RailwayIpc::RPC::ServerResponseHandlers.instance.register(handler: with, message: message_type)
13
15
  end
14
16
 
15
- def initialize(opts = {automatic_recovery: true}, rabbit_adapter: RailwayIpc::Rabbitmq::Adapter)
17
+ def initialize(opts={ automatic_recovery: true }, rabbit_adapter: RailwayIpc::Rabbitmq::Adapter)
16
18
  @rabbit_connection = rabbit_adapter.new(
17
19
  queue_name: self.class.queue_name,
18
20
  exchange_name: self.class.exchange_name,
@@ -29,6 +31,8 @@ module RailwayIpc
29
31
  subscribe_to_queue
30
32
  end
31
33
 
34
+ # rubocop:disable Metrics/AbcSize
35
+ # rubocop:disable Metrics/MethodLength
32
36
  def work(payload)
33
37
  decoded_payload = RailwayIpc::Rabbitmq::Payload.decode(payload)
34
38
  case decoded_payload.type
@@ -38,7 +42,7 @@ module RailwayIpc
38
42
  responder.respond(message)
39
43
  else
40
44
  @message = LearnIpc::ErrorMessage.decode(decoded_payload.message)
41
- raise RailwayIpc::UnhandledMessageError, "#{self.class} does not know how to handle #{decoded_payload.type}"
45
+ raise RailwayIpc::UnhandledMessageError.new("#{self.class} does not know how to handle #{decoded_payload.type}")
42
46
  end
43
47
  rescue StandardError => e
44
48
  RailwayIpc.logger.log_exception(
@@ -49,7 +53,10 @@ module RailwayIpc
49
53
  )
50
54
  raise e
51
55
  end
56
+ # rubocop:enable Metrics/AbcSize
57
+ # rubocop:enable Metrics/MethodLength
52
58
 
59
+ # rubocop:disable Metrics/AbcSize
53
60
  def handle_request(payload)
54
61
  response = work(payload)
55
62
  rescue StandardError => e
@@ -62,6 +69,7 @@ module RailwayIpc
62
69
  )
63
70
  end
64
71
  end
72
+ # rubocop:enable Metrics/AbcSize
65
73
 
66
74
  private
67
75
 
@@ -84,6 +92,5 @@ module RailwayIpc
84
92
  handle_request(payload)
85
93
  end
86
94
  end
87
-
88
95
  end
89
96
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'railway_ipc/handler_store'
2
4
  module RailwayIpc
3
5
  module RPC
@@ -1,25 +1,25 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'fileutils'
2
4
 
3
5
  namespace :railway_ipc do
4
6
  namespace :generate do
5
- desc "Generates migrations to store Railway messages"
7
+ desc 'Generates migrations to store Railway messages'
6
8
  task :migrations do
7
- if defined?(ActiveRecord::Base)
8
- puts "generating Railway IPC table migrations"
9
- seconds = 0
10
- gem_path = Gem.loaded_specs['railway-ipc'].full_gem_path
11
- folder_dest = "#{Rails.root.to_s}/db/migrate"
12
- FileUtils.mkdir_p(folder_dest)
9
+ raise 'Migration generation requires active record' unless defined?(ActiveRecord::Base)
10
+
11
+ puts 'generating Railway IPC table migrations'
12
+ seconds = 0
13
+ gem_path = Gem.loaded_specs['railway-ipc'].full_gem_path
14
+ folder_dest = "#{Rails.root}/db/migrate"
15
+ FileUtils.mkdir_p(folder_dest)
13
16
 
14
- Dir.glob("#{gem_path}/priv/migrations/*.rb").each do |file_path|
15
- file_name = File.basename(file_path)
16
- migration_timestamp = (Time.now + seconds).utc.strftime("%Y%m%d%H%M%S") % "%.14d"
17
- new_file_name = "#{migration_timestamp}_#{file_name}"
18
- FileUtils.copy_file(file_path, "#{folder_dest}/#{new_file_name}")
19
- seconds += 1
20
- end
21
- else
22
- raise "Migration generation requires active record"
17
+ Dir.glob("#{gem_path}/priv/migrations/*.rb").each do |file_path|
18
+ file_name = File.basename(file_path)
19
+ migration_timestamp = (Time.now + seconds).utc.strftime('%Y%m%d%H%M%S') % '%.14d'
20
+ new_file_name = "#{migration_timestamp}_#{file_name}"
21
+ FileUtils.copy_file(file_path, "#{folder_dest}/#{new_file_name}")
22
+ seconds += 1
23
23
  end
24
24
  end
25
25
  end
@@ -1,7 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  namespace :railway_ipc do
2
4
  namespace :consumers do
3
5
  task :start do
4
- ENV["WORKERS"] = ENV["CONSUMERS"]
6
+ ENV['WORKERS'] = ENV['CONSUMERS']
5
7
  RailwayIpc.start
6
8
  end
7
9
  end
@@ -1,7 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  namespace :railway_ipc do
2
4
  namespace :servers do
3
5
  task :start do
4
- ENV["WORKERS"] = ENV["SERVERS"]
6
+ ENV['WORKERS'] = ENV['SERVERS']
5
7
  RailwayIpc.start
6
8
  end
7
9
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RailwayIpc
2
4
  class UnhandledMessageError < StandardError
3
5
  end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'google/protobuf'
4
+
5
+ Google::Protobuf::DescriptorPool.generated_pool.build do
6
+ add_message 'railway_ipc.messages.Unknown' do
7
+ optional :user_uuid, :string, 1
8
+ optional :correlation_id, :string, 2
9
+ optional :uuid, :string, 3
10
+ map :context, :string, :string, 4
11
+ end
12
+ end
13
+
14
+ module RailwayIpc
15
+ module Messages
16
+ Unknown = Google::Protobuf::DescriptorPool.generated_pool.lookup('railway_ipc.messages.Unknown').msgclass
17
+ end
18
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RailwayIpc
2
- VERSION = "0.1.7"
4
+ VERSION = '1.0.0'
3
5
  end
@@ -1,6 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class AddRailwayIpcConsumedMessages < ActiveRecord::Migration
2
4
  def change
3
- create_table :railway_ipc_consumed_messages, id: false do | t |
5
+ create_table :railway_ipc_consumed_messages, id: false do |t|
4
6
  t.uuid :uuid, null: false
5
7
  t.string :message_type
6
8
  t.uuid :user_uuid
@@ -1,6 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class AddRailwayIpcPublishedMessages < ActiveRecord::Migration
2
4
  def change
3
- create_table :railway_ipc_published_messages, id: false do | t |
5
+ create_table :railway_ipc_published_messages, id: false do |t|
4
6
  t.uuid :uuid, null: false
5
7
  t.string :message_type
6
8
  t.uuid :user_uuid
@@ -1,50 +1,53 @@
1
- lib = File.expand_path("../lib", __FILE__)
1
+ # frozen_string_literal: true
2
+
3
+ lib = File.expand_path('lib', __dir__)
2
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
- require "railway_ipc/version"
5
+ require 'railway_ipc/version'
4
6
 
5
7
  Gem::Specification.new do |spec|
6
- spec.name = "railway-ipc"
8
+ spec.name = 'railway-ipc'
7
9
  spec.version = RailwayIpc::VERSION
8
- spec.authors = ""
9
- spec.email = ""
10
+ spec.authors = ''
11
+ spec.email = ''
10
12
 
11
- spec.summary = %q{IPC components for Rails}
12
- spec.description = %q{IPC components for Rails}
13
- spec.homepage = "http://learn.co"
14
- spec.license = "MIT"
13
+ spec.summary = 'IPC components for Rails'
14
+ spec.description = 'IPC components for Rails'
15
+ spec.homepage = 'http://learn.co'
16
+ spec.license = 'MIT'
15
17
 
16
18
  # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
17
19
  # to allow pushing to a single host or delete this section to allow pushing to any host.
18
20
  if spec.respond_to?(:metadata)
19
- spec.metadata["allowed_push_host"] = "https://rubygems.org/"
21
+ spec.metadata['allowed_push_host'] = 'https://rubygems.org/'
20
22
  else
21
- raise "RubyGems 2.0 or newer is required to protect against " \
22
- "public gem pushes."
23
+ raise 'RubyGems 2.0 or newer is required to protect against ' \
24
+ 'public gem pushes.'
23
25
  end
24
26
 
25
27
  # Specify which files should be added to the gem when it is released.
26
28
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
27
- spec.files = Dir.chdir(File.expand_path("..", __FILE__)) do
28
- `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
29
+ spec.files = Dir.chdir(File.expand_path(__dir__)) do
30
+ `git ls-files -z`.split("\x0").reject { |f| f.match(/^(.circleci|.rspec|.rubocop.yml|test|spec|features)/) }
29
31
  end
30
- spec.bindir = "exe"
32
+ spec.bindir = 'exe'
31
33
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
32
- spec.require_paths = ["lib"]
34
+ spec.require_paths = ['lib']
35
+
36
+ spec.add_development_dependency 'bundler', '2.0.1'
37
+ spec.add_development_dependency 'factory_bot', '~> 5.1'
38
+ spec.add_development_dependency 'google-protobuf', '~> 3.9'
39
+ spec.add_development_dependency 'rake', '>= 10.0.0'
40
+ spec.add_development_dependency 'rspec', '~> 3.0'
41
+ spec.add_development_dependency 'rubocop', '~> 0.86'
33
42
 
34
- spec.add_development_dependency "rake", ">= 10.0.0"
35
- spec.add_development_dependency "bundler", "2.0.1"
36
- spec.add_development_dependency "rspec", "~> 3.0"
37
- spec.add_development_dependency "factory_bot", "~> 5.1"
38
- spec.add_development_dependency "pry-byebug", "3.4.2"
39
- spec.add_development_dependency "google-protobuf", "~> 3.9"
40
- spec.add_dependency "sneakers", "~> 2.3.5"
41
- spec.add_dependency "bunny", "~> 2.2.0"
43
+ spec.add_dependency 'bunny', '~> 2.2.0'
44
+ spec.add_dependency 'sneakers', '~> 2.3.5'
42
45
 
43
46
  # Setup for testing Rails type code within mock Rails app
44
- spec.add_development_dependency "rails", "~> 5.0.7"
45
- spec.add_development_dependency "rspec-rails"
46
- spec.add_development_dependency "pg", "~> 0.18"
47
- spec.add_development_dependency "shoulda-matchers", "~> 4.2"
48
- spec.add_development_dependency "database_cleaner", "~> 1.7"
49
- spec.add_development_dependency "listen", "~> 3.0.5"
47
+ spec.add_development_dependency 'database_cleaner', '~> 1.7'
48
+ spec.add_development_dependency 'listen', '~> 3.0.5'
49
+ spec.add_development_dependency 'pg', '~> 0.18'
50
+ spec.add_development_dependency 'rails', '~> 5.0.7'
51
+ spec.add_development_dependency 'rspec-rails'
52
+ spec.add_development_dependency 'shoulda-matchers', '~> 4.2'
50
53
  end
metadata CHANGED
@@ -1,29 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: railway-ipc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - ''
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-06-29 00:00:00.000000000 Z
11
+ date: 2020-07-20 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: rake
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: 10.0.0
20
- type: :development
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- version: 10.0.0
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: bundler
29
15
  requirement: !ruby/object:Gem::Requirement
@@ -39,75 +25,75 @@ dependencies:
39
25
  - !ruby/object:Gem::Version
40
26
  version: 2.0.1
41
27
  - !ruby/object:Gem::Dependency
42
- name: rspec
28
+ name: factory_bot
43
29
  requirement: !ruby/object:Gem::Requirement
44
30
  requirements:
45
31
  - - "~>"
46
32
  - !ruby/object:Gem::Version
47
- version: '3.0'
33
+ version: '5.1'
48
34
  type: :development
49
35
  prerelease: false
50
36
  version_requirements: !ruby/object:Gem::Requirement
51
37
  requirements:
52
38
  - - "~>"
53
39
  - !ruby/object:Gem::Version
54
- version: '3.0'
40
+ version: '5.1'
55
41
  - !ruby/object:Gem::Dependency
56
- name: factory_bot
42
+ name: google-protobuf
57
43
  requirement: !ruby/object:Gem::Requirement
58
44
  requirements:
59
45
  - - "~>"
60
46
  - !ruby/object:Gem::Version
61
- version: '5.1'
47
+ version: '3.9'
62
48
  type: :development
63
49
  prerelease: false
64
50
  version_requirements: !ruby/object:Gem::Requirement
65
51
  requirements:
66
52
  - - "~>"
67
53
  - !ruby/object:Gem::Version
68
- version: '5.1'
54
+ version: '3.9'
69
55
  - !ruby/object:Gem::Dependency
70
- name: pry-byebug
56
+ name: rake
71
57
  requirement: !ruby/object:Gem::Requirement
72
58
  requirements:
73
- - - '='
59
+ - - ">="
74
60
  - !ruby/object:Gem::Version
75
- version: 3.4.2
61
+ version: 10.0.0
76
62
  type: :development
77
63
  prerelease: false
78
64
  version_requirements: !ruby/object:Gem::Requirement
79
65
  requirements:
80
- - - '='
66
+ - - ">="
81
67
  - !ruby/object:Gem::Version
82
- version: 3.4.2
68
+ version: 10.0.0
83
69
  - !ruby/object:Gem::Dependency
84
- name: google-protobuf
70
+ name: rspec
85
71
  requirement: !ruby/object:Gem::Requirement
86
72
  requirements:
87
73
  - - "~>"
88
74
  - !ruby/object:Gem::Version
89
- version: '3.9'
75
+ version: '3.0'
90
76
  type: :development
91
77
  prerelease: false
92
78
  version_requirements: !ruby/object:Gem::Requirement
93
79
  requirements:
94
80
  - - "~>"
95
81
  - !ruby/object:Gem::Version
96
- version: '3.9'
82
+ version: '3.0'
97
83
  - !ruby/object:Gem::Dependency
98
- name: sneakers
84
+ name: rubocop
99
85
  requirement: !ruby/object:Gem::Requirement
100
86
  requirements:
101
87
  - - "~>"
102
88
  - !ruby/object:Gem::Version
103
- version: 2.3.5
104
- type: :runtime
89
+ version: '0.86'
90
+ type: :development
105
91
  prerelease: false
106
92
  version_requirements: !ruby/object:Gem::Requirement
107
93
  requirements:
108
94
  - - "~>"
109
95
  - !ruby/object:Gem::Version
110
- version: 2.3.5
96
+ version: '0.86'
111
97
  - !ruby/object:Gem::Dependency
112
98
  name: bunny
113
99
  requirement: !ruby/object:Gem::Requirement
@@ -123,33 +109,47 @@ dependencies:
123
109
  - !ruby/object:Gem::Version
124
110
  version: 2.2.0
125
111
  - !ruby/object:Gem::Dependency
126
- name: rails
112
+ name: sneakers
127
113
  requirement: !ruby/object:Gem::Requirement
128
114
  requirements:
129
115
  - - "~>"
130
116
  - !ruby/object:Gem::Version
131
- version: 5.0.7
117
+ version: 2.3.5
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: 2.3.5
125
+ - !ruby/object:Gem::Dependency
126
+ name: database_cleaner
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '1.7'
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
- version: 5.0.7
138
+ version: '1.7'
139
139
  - !ruby/object:Gem::Dependency
140
- name: rspec-rails
140
+ name: listen
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
- - - ">="
143
+ - - "~>"
144
144
  - !ruby/object:Gem::Version
145
- version: '0'
145
+ version: 3.0.5
146
146
  type: :development
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
- - - ">="
150
+ - - "~>"
151
151
  - !ruby/object:Gem::Version
152
- version: '0'
152
+ version: 3.0.5
153
153
  - !ruby/object:Gem::Dependency
154
154
  name: pg
155
155
  requirement: !ruby/object:Gem::Requirement
@@ -165,47 +165,47 @@ dependencies:
165
165
  - !ruby/object:Gem::Version
166
166
  version: '0.18'
167
167
  - !ruby/object:Gem::Dependency
168
- name: shoulda-matchers
168
+ name: rails
169
169
  requirement: !ruby/object:Gem::Requirement
170
170
  requirements:
171
171
  - - "~>"
172
172
  - !ruby/object:Gem::Version
173
- version: '4.2'
173
+ version: 5.0.7
174
174
  type: :development
175
175
  prerelease: false
176
176
  version_requirements: !ruby/object:Gem::Requirement
177
177
  requirements:
178
178
  - - "~>"
179
179
  - !ruby/object:Gem::Version
180
- version: '4.2'
180
+ version: 5.0.7
181
181
  - !ruby/object:Gem::Dependency
182
- name: database_cleaner
182
+ name: rspec-rails
183
183
  requirement: !ruby/object:Gem::Requirement
184
184
  requirements:
185
- - - "~>"
185
+ - - ">="
186
186
  - !ruby/object:Gem::Version
187
- version: '1.7'
187
+ version: '0'
188
188
  type: :development
189
189
  prerelease: false
190
190
  version_requirements: !ruby/object:Gem::Requirement
191
191
  requirements:
192
- - - "~>"
192
+ - - ">="
193
193
  - !ruby/object:Gem::Version
194
- version: '1.7'
194
+ version: '0'
195
195
  - !ruby/object:Gem::Dependency
196
- name: listen
196
+ name: shoulda-matchers
197
197
  requirement: !ruby/object:Gem::Requirement
198
198
  requirements:
199
199
  - - "~>"
200
200
  - !ruby/object:Gem::Version
201
- version: 3.0.5
201
+ version: '4.2'
202
202
  type: :development
203
203
  prerelease: false
204
204
  version_requirements: !ruby/object:Gem::Requirement
205
205
  requirements:
206
206
  - - "~>"
207
207
  - !ruby/object:Gem::Version
208
- version: 3.0.5
208
+ version: '4.2'
209
209
  description: IPC components for Rails
210
210
  email: ''
211
211
  executables: []
@@ -213,31 +213,29 @@ extensions: []
213
213
  extra_rdoc_files: []
214
214
  files:
215
215
  - ".gitignore"
216
- - ".rspec"
217
- - ".travis.yml"
218
216
  - CHANGELOG.MD
219
217
  - CODE_OF_CONDUCT.md
220
218
  - Gemfile
221
- - Gemfile.lock
222
219
  - LICENSE.txt
223
220
  - README.md
224
221
  - Rakefile
225
222
  - bin/console
223
+ - bin/rspec
224
+ - bin/rubocop
226
225
  - bin/setup
227
226
  - lib/railway_ipc.rb
228
227
  - lib/railway_ipc/Rakefile
229
- - lib/railway_ipc/base_message.pb.rb
230
228
  - lib/railway_ipc/consumer/consumer.rb
231
229
  - lib/railway_ipc/consumer/consumer_response_handlers.rb
230
+ - lib/railway_ipc/consumer/process_incoming_message.rb
232
231
  - lib/railway_ipc/errors.rb
233
232
  - lib/railway_ipc/handler.rb
234
233
  - lib/railway_ipc/handler_manifest.rb
235
234
  - lib/railway_ipc/handler_store.rb
235
+ - lib/railway_ipc/incoming_message.rb
236
236
  - lib/railway_ipc/logger.rb
237
237
  - lib/railway_ipc/models/consumed_message.rb
238
238
  - lib/railway_ipc/models/published_message.rb
239
- - lib/railway_ipc/null_handler.rb
240
- - lib/railway_ipc/null_message.rb
241
239
  - lib/railway_ipc/publisher.rb
242
240
  - lib/railway_ipc/rabbitmq/adapter.rb
243
241
  - lib/railway_ipc/rabbitmq/payload.rb
@@ -257,6 +255,7 @@ files:
257
255
  - lib/railway_ipc/tasks/start_consumers.rake
258
256
  - lib/railway_ipc/tasks/start_servers.rake
259
257
  - lib/railway_ipc/unhandled_message_error.rb
258
+ - lib/railway_ipc/unknown_message.pb.rb
260
259
  - lib/railway_ipc/version.rb
261
260
  - priv/migrations/add_railway_ipc_consumed_messages.rb
262
261
  - priv/migrations/add_railway_ipc_published_messages.rb
@@ -281,7 +280,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
281
280
  - !ruby/object:Gem::Version
282
281
  version: '0'
283
282
  requirements: []
284
- rubygems_version: 3.0.8
283
+ rubyforge_project:
284
+ rubygems_version: 2.7.6
285
285
  signing_key:
286
286
  specification_version: 4
287
287
  summary: IPC components for Rails