nexus_cqrs 0.1.0 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ba82d98a3e3c930a35f6d06960be706925bf96db44766686fb2db3460649a792
4
- data.tar.gz: 96ecd8dd6f98fb2637cc740d45a52a7c5f488e1f058fb7ff32215d4a7e050a57
3
+ metadata.gz: 22851e4cf72bdb9d4895163003f9ccaef81182f71ba64de7b9729c80f06ea40b
4
+ data.tar.gz: a39184dedf35d590ad9b7f3dab51facbd233fd5e9ec7ddeab27c714604c47018
5
5
  SHA512:
6
- metadata.gz: d606496e70c6d987723a99b0620b20fc68370c06d7e5d891bb870375d4d16c5dd5c43c761f235e22deeddad2130951d32048ff9089fc9db94a138c96b3b8d050
7
- data.tar.gz: 5af5eee683dfa8717038a7fe275eebb11c82b0c2b82bf24962c9083ecc22dca82e666d4324d90e17bae7729a3f999c0e7d2f2267f1e2b4fc28e7758c333cd2c4
6
+ metadata.gz: 5dd0e3cf9cb2014329a289bb94a9659144109988775709566996eb69aeaf663cc504ceb9cc83fb33b9e99fe2fc3e424c2584d0269d0b57564cecb148c1e0006c
7
+ data.tar.gz: 92497f3e118eb6bfad46e842fc0713fb64a8785ac0251296215003449593515c445de351c0afe9ff5f30efb9e5df1e0c4cf72c9c5c486ec253293c0e1e3094d4
data/.gitignore CHANGED
@@ -9,3 +9,5 @@
9
9
  /.gem
10
10
  /spec/lib/tmp
11
11
  *.gem
12
+
13
+ results/rubocop.html
data/.gitlab-ci.yml CHANGED
@@ -25,7 +25,7 @@ release:
25
25
  - if: '$CI_COMMIT_TAG'
26
26
  script:
27
27
  - mkdir -p ~/.gem
28
- - cp /builds/pub/nexus_cqrs.tmp/RUBYGEMS_CREDENTIALS ~/.gem/credentials
28
+ - cp $RUBYGEMS_CREDENTIALS ~/.gem/credentials
29
29
  - chmod 0600 ~/.gem/credentials
30
30
  - gem update --system
31
31
  - ruby --version
@@ -35,5 +35,5 @@ release:
35
35
  - gem push nexus_cqrs*.gem
36
36
  artifacts:
37
37
  paths:
38
- - gitlab-styles*.gem
38
+ - nexus_cqrs*.gem
39
39
  expire_in: 30 days
data/Gemfile CHANGED
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  source 'https://rubygems.org'
2
3
 
3
4
  # Specify your gem's dependencies in cqrs-core.gemspec
data/Gemfile.lock CHANGED
@@ -1,104 +1,109 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- nexus_cqrs (0.1.0)
4
+ nexus_cqrs (0.3.1)
5
+ generator_spec
6
+ ibsciss-middleware
7
+ thread_safe
5
8
 
6
9
  GEM
7
10
  remote: https://rubygems.org/
8
11
  specs:
9
- actionpack (6.0.3.2)
10
- actionview (= 6.0.3.2)
11
- activesupport (= 6.0.3.2)
12
- rack (~> 2.0, >= 2.0.8)
12
+ actionpack (6.1.4.1)
13
+ actionview (= 6.1.4.1)
14
+ activesupport (= 6.1.4.1)
15
+ rack (~> 2.0, >= 2.0.9)
13
16
  rack-test (>= 0.6.3)
14
17
  rails-dom-testing (~> 2.0)
15
18
  rails-html-sanitizer (~> 1.0, >= 1.2.0)
16
- actionview (6.0.3.2)
17
- activesupport (= 6.0.3.2)
19
+ actionview (6.1.4.1)
20
+ activesupport (= 6.1.4.1)
18
21
  builder (~> 3.1)
19
22
  erubi (~> 1.4)
20
23
  rails-dom-testing (~> 2.0)
21
24
  rails-html-sanitizer (~> 1.1, >= 1.2.0)
22
- activesupport (6.0.3.2)
25
+ activesupport (6.1.4.1)
23
26
  concurrent-ruby (~> 1.0, >= 1.0.2)
24
- i18n (>= 0.7, < 2)
25
- minitest (~> 5.1)
26
- tzinfo (~> 1.1)
27
- zeitwerk (~> 2.2, >= 2.2.2)
28
- ast (2.4.1)
27
+ i18n (>= 1.6, < 2)
28
+ minitest (>= 5.1)
29
+ tzinfo (~> 2.0)
30
+ zeitwerk (~> 2.3)
31
+ ast (2.4.2)
29
32
  builder (3.2.4)
30
- concurrent-ruby (1.1.7)
33
+ concurrent-ruby (1.1.9)
31
34
  crass (1.0.6)
32
35
  diff-lcs (1.4.4)
33
- erubi (1.9.0)
36
+ erubi (1.10.0)
34
37
  generator_spec (0.9.4)
35
38
  activesupport (>= 3.0.0)
36
39
  railties (>= 3.0.0)
37
- i18n (1.8.5)
40
+ i18n (1.8.11)
38
41
  concurrent-ruby (~> 1.0)
39
42
  ibsciss-middleware (0.4.2)
40
- loofah (2.6.0)
43
+ loofah (2.12.0)
41
44
  crass (~> 1.0.2)
42
45
  nokogiri (>= 1.5.9)
43
46
  method_source (1.0.0)
44
- mini_portile2 (2.4.0)
45
- minitest (5.14.1)
46
- nokogiri (1.10.10)
47
- mini_portile2 (~> 2.4.0)
48
- parallel (1.19.2)
49
- parser (2.7.1.4)
47
+ mini_portile2 (2.6.1)
48
+ minitest (5.14.4)
49
+ nokogiri (1.12.5)
50
+ mini_portile2 (~> 2.6.1)
51
+ racc (~> 1.4)
52
+ parallel (1.21.0)
53
+ parser (3.0.2.0)
50
54
  ast (~> 2.4.1)
55
+ racc (1.6.0)
51
56
  rack (2.2.3)
52
57
  rack-test (1.1.0)
53
58
  rack (>= 1.0, < 3)
54
59
  rails-dom-testing (2.0.3)
55
60
  activesupport (>= 4.2.0)
56
61
  nokogiri (>= 1.6)
57
- rails-html-sanitizer (1.3.0)
62
+ rails-html-sanitizer (1.4.2)
58
63
  loofah (~> 2.3)
59
- railties (6.0.3.2)
60
- actionpack (= 6.0.3.2)
61
- activesupport (= 6.0.3.2)
64
+ railties (6.1.4.1)
65
+ actionpack (= 6.1.4.1)
66
+ activesupport (= 6.1.4.1)
62
67
  method_source
63
- rake (>= 0.8.7)
64
- thor (>= 0.20.3, < 2.0)
68
+ rake (>= 0.13)
69
+ thor (~> 1.0)
65
70
  rainbow (3.0.0)
66
- rake (13.0.1)
67
- regexp_parser (1.7.1)
68
- rexml (3.2.4)
69
- rspec (3.9.0)
70
- rspec-core (~> 3.9.0)
71
- rspec-expectations (~> 3.9.0)
72
- rspec-mocks (~> 3.9.0)
73
- rspec-core (3.9.2)
74
- rspec-support (~> 3.9.3)
75
- rspec-expectations (3.9.2)
71
+ rake (13.0.6)
72
+ regexp_parser (2.1.1)
73
+ rexml (3.2.5)
74
+ rspec (3.10.0)
75
+ rspec-core (~> 3.10.0)
76
+ rspec-expectations (~> 3.10.0)
77
+ rspec-mocks (~> 3.10.0)
78
+ rspec-core (3.10.1)
79
+ rspec-support (~> 3.10.0)
80
+ rspec-expectations (3.10.1)
76
81
  diff-lcs (>= 1.2.0, < 2.0)
77
- rspec-support (~> 3.9.0)
78
- rspec-mocks (3.9.1)
82
+ rspec-support (~> 3.10.0)
83
+ rspec-mocks (3.10.2)
79
84
  diff-lcs (>= 1.2.0, < 2.0)
80
- rspec-support (~> 3.9.0)
81
- rspec-support (3.9.3)
82
- rubocop (0.86.0)
85
+ rspec-support (~> 3.10.0)
86
+ rspec-support (3.10.3)
87
+ rubocop (1.22.3)
83
88
  parallel (~> 1.10)
84
- parser (>= 2.7.0.1)
89
+ parser (>= 3.0.0.0)
85
90
  rainbow (>= 2.2.2, < 4.0)
86
- regexp_parser (>= 1.7)
91
+ regexp_parser (>= 1.8, < 3.0)
87
92
  rexml
88
- rubocop-ast (>= 0.0.3, < 1.0)
93
+ rubocop-ast (>= 1.12.0, < 2.0)
89
94
  ruby-progressbar (~> 1.7)
90
- unicode-display_width (>= 1.4.0, < 2.0)
91
- rubocop-ast (0.3.0)
92
- parser (>= 2.7.1.4)
93
- rubocop-shopify (1.0.4)
94
- rubocop (>= 0.85, < 0.87)
95
- ruby-progressbar (1.10.1)
96
- thor (1.0.1)
95
+ unicode-display_width (>= 1.4.0, < 3.0)
96
+ rubocop-ast (1.13.0)
97
+ parser (>= 3.0.1.1)
98
+ rubocop-shopify (1.0.7)
99
+ rubocop (~> 1.4)
100
+ ruby-progressbar (1.11.0)
101
+ thor (1.1.0)
97
102
  thread_safe (0.3.6)
98
- tzinfo (1.2.7)
99
- thread_safe (~> 0.1)
100
- unicode-display_width (1.7.0)
101
- zeitwerk (2.4.0)
103
+ tzinfo (2.0.4)
104
+ concurrent-ruby (~> 1.0)
105
+ unicode-display_width (2.1.0)
106
+ zeitwerk (2.5.1)
102
107
 
103
108
  PLATFORMS
104
109
  ruby
data/README.md CHANGED
@@ -62,4 +62,8 @@ To contribute to this gem, simple pull the repository, run `bundle install` and
62
62
  ```shell script
63
63
  bundle exec rspec
64
64
  bundle exec rubocop
65
- ```
65
+ ```
66
+
67
+ ## Releasing
68
+
69
+ The release process is tied to the git tags. Simply creating a new tag and pushing will trigger a new release to reubygems.
data/Rakefile CHANGED
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require "bundler/gem_tasks"
2
3
  require 'bundler/gem_tasks'
3
4
  task(default: :spec)
data/bin/console CHANGED
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
 
3
4
  require 'bundler/setup'
4
5
  require 'cqrs/core'
@@ -2,7 +2,7 @@ Description:
2
2
  Generates a new Query object, along with the QueryHandler
3
3
 
4
4
  Example:
5
- rails generate cqrs:query GetUserById
5
+ rails generate cqrs:query GetUserById --permission
6
6
 
7
7
  This will create:
8
8
  app/domain/queries/get_user_by_id.rb
@@ -1,30 +1,30 @@
1
+ # frozen_string_literal: true
1
2
  require 'rails/generators/base'
2
3
 
3
4
  module NexusCqrs
4
5
  class CommandGenerator < Rails::Generators::NamedBase
5
6
  source_root File.expand_path('templates', __dir__)
7
+ class_option :permission, type: :string, default: nil
6
8
 
7
9
  def copy_command_file
8
10
  file_path = class_name.underscore
9
11
 
12
+ @permission = options['permission']
13
+
10
14
  template('command.rb', "app/domain/commands/#{file_path}.rb")
11
15
  template('command_handler.rb', "app/domain/commands/#{file_path}_handler.rb")
12
16
 
13
- register_command(class_name)
17
+ register_command
14
18
  end
15
19
 
16
20
  private
17
21
 
18
- def register_command(full_name)
22
+ def register_command
19
23
  handler_config = 'config/initializers/register_cqrs_handlers.rb'
20
24
 
21
25
  unless File.exist?('config/initializers/register_cqrs_handlers.rb')
22
26
  template('register_cqrs_handlers.rb', handler_config)
23
27
  end
24
-
25
- code_to_inject = "$COMMAND_EXECUTOR.register_command(#{full_name}, #{full_name}Handler.new)\n"
26
-
27
- inject_into_file(handler_config, code_to_inject, after: "# Register Commands\n")
28
28
  end
29
29
  end
30
30
  end
@@ -1,30 +1,30 @@
1
+ # frozen_string_literal: true
1
2
  require 'rails/generators/base'
2
3
 
3
4
  module NexusCqrs
4
5
  class QueryGenerator < Rails::Generators::NamedBase
5
6
  source_root File.expand_path('templates', __dir__)
7
+ class_option :permission, type: :string, default: nil
6
8
 
7
9
  def copy_query_file
8
10
  file_path = class_name.underscore
9
11
 
12
+ @permission = options['permission']
13
+
10
14
  template('query.rb', "app/domain/queries/#{file_path}.rb")
11
15
  template('query_handler.rb', "app/domain/queries/#{file_path}_handler.rb")
12
16
 
13
- register_query(class_name)
17
+ register_query
14
18
  end
15
19
 
16
20
  private
17
21
 
18
- def register_query(full_name)
22
+ def register_query
19
23
  handler_config = 'config/initializers/register_cqrs_handlers.rb'
20
24
 
21
25
  unless File.exist?('config/initializers/register_cqrs_handlers.rb')
22
26
  template('register_cqrs_handlers.rb', handler_config)
23
27
  end
24
-
25
- code_to_inject = "$QUERY_EXECUTOR.register_command(#{full_name}, #{full_name}Handler.new)\n"
26
-
27
- inject_into_file(handler_config, code_to_inject, after: "# Register Queries\n")
28
28
  end
29
29
  end
30
30
  end
@@ -1,9 +1,26 @@
1
+ # frozen_string_literal: true
1
2
  module Commands
2
- class <%= class_name %>Handler < NexusCqrs::BaseCommandHandler
3
+ # Command handler
4
+ class <%= class_name %>Handler < BaseCommandHandler
5
+ <% if @permission %>include NexusCqrs::Helpers<% end %>
3
6
 
4
- # call is where the Command is executed
7
+ # @param [<%= class_name %>] command
5
8
  def call(command)
9
+ <% if @permission %>authorize(command, Model)<% end %>
6
10
 
11
+ domain_event(command)
7
12
  end
13
+
14
+ private
15
+
16
+ def domain_event(command)
17
+ NexusDomainEvents::Event.new(
18
+ message_name: :ENTITY_WAS_ACTIONED,
19
+ actor: command.metadata[:current_user].member_id,
20
+ payload: {
21
+ object_id: command.id,
22
+ }
23
+ )
24
+ end
8
25
  end
9
26
  end
@@ -1,9 +1,10 @@
1
1
  module Queries
2
2
  class <%= class_name %>Handler < NexusCqrs::BaseQueryHandler
3
+ <% if @permission %>include NexusCqrs::Helpers<% end %>
3
4
 
4
- # call is where the Query is executed
5
+ # @param [<%= class_name %>] command
5
6
  def call(command)
6
-
7
+ <% if @permission %>authorize(command, Model)<% end %>
7
8
  end
8
9
  end
9
10
  end
@@ -1,9 +1,25 @@
1
- command_bus = NexusCqrs::CommandBus.new
2
- query_bus = NexusCqrs::CommandBus.new
1
+ # frozen_string_literal: true
2
+ Rails.configuration.to_prepare do
3
+ middleware_stack = Middleware::Builder.new do |b|
4
+ b.use(NexusCqrsAuth::AuthMiddleware)
5
+ end
3
6
 
4
- $COMMAND_EXECUTOR = NexusCqrs::CommandExecutor.new command_bus
5
- $QUERY_EXECUTOR = NexusCqrs::CommandExecutor.new query_bus
7
+ command_bus = NexusCqrs::CommandBus.new(middleware: middleware_stack)
8
+ query_bus = NexusCqrs::CommandBus.new(middleware: middleware_stack)
6
9
 
7
- # Register Queries
10
+ $COMMAND_EXECUTOR = NexusCqrs::CommandExecutor.new(command_bus)
11
+ $QUERY_EXECUTOR = NexusCqrs::CommandExecutor.new(query_bus)
8
12
 
9
- # Register Commands
13
+ # Register Commands
14
+ $QUERY_EXECUTOR.configure_handlers do |executor|
15
+ # Manually registered queries should always go above the autoregister
16
+
17
+ executor.autoregister(NexusCqrs::BaseQuery, 'app/domain/queries')
18
+ end
19
+
20
+ $COMMAND_EXECUTOR.configure_handlers do |executor|
21
+ # Manually registered commands should always go above the autoregister
22
+
23
+ executor.autoregister(NexusCqrs::BaseCommand, 'app/domain/commands')
24
+ end
25
+ end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module NexusCqrs
2
3
  class BaseCommand < BaseMessage
3
4
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module NexusCqrs
2
3
  class BaseCommandHandler
3
4
  def call(command)
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module NexusCqrs
2
3
  class BaseMessage
3
4
  def set_metadata(key, value)
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module NexusCqrs
2
3
  class BaseMiddleware
3
4
  def initialize(next_)
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module NexusCqrs
2
3
  class BaseQuery < BaseMessage
3
4
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module NexusCqrs
2
3
  class BaseQueryHandler
3
4
  def call(query)
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require 'thread_safe'
2
3
  require 'middleware'
3
4
 
@@ -7,8 +8,7 @@ module NexusCqrs
7
8
  MultipleHandlers = Class.new(StandardError)
8
9
 
9
10
  def initialize(middleware: nil)
10
- @handlers =
11
- ThreadSafe::Cache.new
11
+ @handlers = ThreadSafe::Cache.new
12
12
  @middleware = middleware || Middleware::Builder.new
13
13
  end
14
14
 
@@ -29,6 +29,10 @@ module NexusCqrs
29
29
  handlers
30
30
  end
31
31
 
32
+ def clear_handlers
33
+ @handlers = ThreadSafe::Cache.new
34
+ end
35
+
32
36
  attr_reader :handlers
33
37
 
34
38
  private
@@ -1,24 +1,73 @@
1
+ # frozen_string_literal: true
1
2
  module NexusCqrs
2
3
  class CommandExecutor
4
+ # @param [NexusCqrs::CommandBus] command_bus
3
5
  def initialize(command_bus)
4
6
  @bus = command_bus
7
+ end
8
+
9
+ def autoregister(base_class, dir = 'app/domain/commands', ignore_strings = ['.rb', 'app/domain/'])
10
+ # Iterate over the director passed and find all ruby files, removing unwanted parts of the string.
11
+ Dir["#{dir}/*.rb"].each do |file|
12
+ ignore_strings.each do |i|
13
+ file.slice!(i)
14
+ end
15
+ begin
16
+ # Constantize class name to constant to force rails to autoload this class
17
+ file.camelize.constantize
18
+ rescue NameError
19
+ puts "WARN: Tried to autoregister #{file.camelize} but class could not be found"
20
+ end
21
+ end
5
22
 
6
- register_commands
23
+ ObjectSpace.each_object(Class).select { |klass| klass < base_class }.each do |c|
24
+ handler_name = (c.to_s + "Handler")
25
+ begin
26
+ handler = handler_name.constantize.new
27
+ rescue NameError
28
+ Rails.logger.error(
29
+ "WARN: A command `#{c}` tried to autoregister `#{handler_name}` but the class was not found"
30
+ )
31
+ next
32
+ end
33
+
34
+ if handler.respond_to?(:call)
35
+ register_command(c, handler)
36
+ else
37
+ Rails.logger.error(
38
+ "WARN: A command `#{c}` tried to autoregister `#{handler_name}` but `call` method did not exist"
39
+ )
40
+ end
41
+ end
7
42
  end
8
43
 
44
+ # Returns the bus used by this executor
45
+ #
46
+ # @return [NexusCqrs::CommandBus] command_bus
47
+ def command_bus
48
+ @bus
49
+ end
50
+
51
+ # @param [NexusCqrs::BaseCommand] command
9
52
  def execute(command)
10
53
  @bus.call(command)
11
54
  end
12
55
 
56
+ # @param [NexusCqrs::BaseCommandHandler] handler
13
57
  def register_command(klass, handler)
14
- Rails.logger.debug("Registered #{klass} to #{handler}")
15
58
  @bus.register(klass, handler)
16
59
  end
17
60
 
18
- private
61
+ def reregister_handlers
62
+ return if @register_handlers.nil?
63
+
64
+ @bus.clear_handlers
65
+ @register_handlers.call(self)
66
+ end
19
67
 
20
- def register_commands
21
- # TODO, Register Commands/Queries
68
+ def configure_handlers(&block)
69
+ @register_handlers = block
70
+ @register_handlers.call(self)
22
71
  end
23
72
  end
24
73
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module NexusCqrs
2
3
  module Helpers
3
4
  # Executes a CQRS Command
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module NexusCqrs
2
- VERSION = '0.1.0'
3
+ VERSION = '0.3.1'
3
4
  end
data/lib/nexus_cqrs.rb CHANGED
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require 'nexus_cqrs/base_message'
2
3
  require 'nexus_cqrs/base_middleware'
3
4
  require 'nexus_cqrs/base_command'
data/nexus_cqrs.gemspec CHANGED
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require_relative 'lib/nexus_cqrs/version'
2
3
 
3
4
  Gem::Specification.new do |spec|
@@ -17,4 +18,7 @@ Gem::Specification.new do |spec|
17
18
  spec.bindir = 'exe'
18
19
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
19
20
  spec.require_paths = ['lib']
21
+ spec.add_dependency('generator_spec')
22
+ spec.add_dependency('thread_safe')
23
+ spec.add_dependency('ibsciss-middleware')
20
24
  end
metadata CHANGED
@@ -1,15 +1,57 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nexus_cqrs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dean Lovett
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-09-30 00:00:00.000000000 Z
12
- dependencies: []
11
+ date: 2021-11-11 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: generator_spec
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: thread_safe
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: ibsciss-middleware
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
13
55
  description:
14
56
  email:
15
57
  - dean.lovett@nexusmods.com
@@ -66,7 +108,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
66
108
  - !ruby/object:Gem::Version
67
109
  version: '0'
68
110
  requirements: []
69
- rubygems_version: 3.1.4
111
+ rubygems_version: 3.2.31
70
112
  signing_key:
71
113
  specification_version: 4
72
114
  summary: Core package for the nexus cqrs gem