pub_sub_model_sync 0.4.0 → 0.5.0.1

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.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ruby.yml +30 -8
  3. data/.rubocop.yml +6 -1
  4. data/CHANGELOG.md +27 -0
  5. data/Gemfile +1 -1
  6. data/Gemfile.lock +25 -23
  7. data/README.md +55 -29
  8. data/gemfiles/Gemfile_4 +16 -0
  9. data/gemfiles/Gemfile_5 +14 -0
  10. data/gemfiles/Gemfile_6 +14 -0
  11. data/lib/pub_sub_model_sync.rb +1 -0
  12. data/lib/pub_sub_model_sync/base.rb +17 -0
  13. data/lib/pub_sub_model_sync/config.rb +18 -3
  14. data/lib/pub_sub_model_sync/connector.rb +1 -0
  15. data/lib/pub_sub_model_sync/message_processor.rb +27 -21
  16. data/lib/pub_sub_model_sync/message_publisher.rb +25 -9
  17. data/lib/pub_sub_model_sync/mock_rabbit_service.rb +5 -0
  18. data/lib/pub_sub_model_sync/payload.rb +45 -0
  19. data/lib/pub_sub_model_sync/publisher.rb +1 -0
  20. data/lib/pub_sub_model_sync/publisher_concern.rb +3 -1
  21. data/lib/pub_sub_model_sync/service_base.rb +25 -13
  22. data/lib/pub_sub_model_sync/service_google.rb +4 -18
  23. data/lib/pub_sub_model_sync/service_kafka.rb +4 -17
  24. data/lib/pub_sub_model_sync/service_rabbit.rb +20 -27
  25. data/lib/pub_sub_model_sync/subscriber.rb +3 -3
  26. data/lib/pub_sub_model_sync/subscriber_concern.rb +6 -0
  27. data/lib/pub_sub_model_sync/version.rb +1 -1
  28. data/pub_sub_model_sync.gemspec +1 -1
  29. metadata +11 -29
  30. data/.idea/.gitignore +0 -8
  31. data/.idea/.rakeTasks +0 -7
  32. data/.idea/codeStyles/codeStyleConfig.xml +0 -5
  33. data/.idea/encodings.xml +0 -4
  34. data/.idea/inspectionProfiles/Project_Default.xml +0 -16
  35. data/.idea/misc.xml +0 -7
  36. data/.idea/modules.xml +0 -8
  37. data/.idea/pub_sub_model_sync.iml +0 -96
  38. data/.idea/vcs.xml +0 -6
@@ -7,8 +7,7 @@ end
7
7
 
8
8
  module PubSubModelSync
9
9
  class ServiceRabbit < ServiceBase
10
- attr_accessor :service, :channel, :queue, :topic
11
- attr_accessor :config
10
+ attr_accessor :config, :service, :channel, :queue, :topic
12
11
 
13
12
  def initialize
14
13
  @config = PubSubModelSync::Config
@@ -22,22 +21,21 @@ module PubSubModelSync
22
21
  queue.subscribe(subscribe_settings, &method(:process_message))
23
22
  loop { sleep 5 }
24
23
  rescue PubSubModelSync::Runner::ShutDown
25
- raise
24
+ log('Listener stopped')
26
25
  rescue => e
27
26
  log("Error listening message: #{[e.message, e.backtrace]}", :error)
28
27
  end
29
28
 
30
- def publish(data, attributes)
31
- log("Publishing: #{[data, attributes]}")
32
- deliver_data(data, attributes)
33
- # TODO: max retry
34
- rescue Timeout::Error => e
35
- log("Error publishing (retrying....): #{e.message}", :error)
36
- initialize
37
- retry
29
+ def publish(payload)
30
+ qty_retry ||= 0
31
+ deliver_data(payload)
38
32
  rescue => e
39
- info = [data, attributes, e.message, e.backtrace]
40
- log("Error publishing: #{info}", :error)
33
+ if e.is_a?(Timeout::Error) && (qty_retry += 1) <= 2
34
+ log("Error publishing (retrying....): #{e.message}", :error)
35
+ initialize
36
+ retry
37
+ end
38
+ raise
41
39
  end
42
40
 
43
41
  def stop
@@ -48,7 +46,10 @@ module PubSubModelSync
48
46
  private
49
47
 
50
48
  def message_settings
51
- { routing_key: queue.name, type: SERVICE_KEY }
49
+ {
50
+ routing_key: queue.name,
51
+ type: SERVICE_KEY
52
+ }
52
53
  end
53
54
 
54
55
  def subscribe_settings
@@ -58,10 +59,7 @@ module PubSubModelSync
58
59
  def process_message(_delivery_info, meta_info, payload)
59
60
  return unless meta_info[:type] == SERVICE_KEY
60
61
 
61
- perform_message(payload)
62
- rescue => e
63
- error = [payload, e.message, e.backtrace]
64
- log("Error processing message: #{error}", :error)
62
+ super(payload)
65
63
  end
66
64
 
67
65
  def subscribe_to_queue
@@ -69,21 +67,16 @@ module PubSubModelSync
69
67
  @channel = service.create_channel
70
68
  queue_settings = { durable: true, auto_delete: false }
71
69
  @queue = channel.queue(config.queue_name, queue_settings)
72
- subscribe_to_topic
70
+ subscribe_to_exchange
73
71
  end
74
72
 
75
- def subscribe_to_topic
76
- @topic = channel.topic(config.topic_name)
73
+ def subscribe_to_exchange
74
+ @topic = channel.fanout(config.topic_name)
77
75
  queue.bind(topic, routing_key: queue.name)
78
76
  end
79
77
 
80
- def log(msg, kind = :info)
81
- config.log("Rabbit Service ==> #{msg}", kind)
82
- end
83
-
84
- def deliver_data(data, attributes)
78
+ def deliver_data(payload)
85
79
  subscribe_to_queue
86
- payload = { data: data, attributes: attributes }
87
80
  topic.publish(payload.to_json, message_settings)
88
81
 
89
82
  # Ugly fix: "IO timeout when reading 7 bytes"
@@ -37,15 +37,15 @@ module PubSubModelSync
37
37
  model.destroy!
38
38
  else
39
39
  populate_model(model, message)
40
+ return if action == :update && !model.ps_subscriber_changed?(message)
41
+
40
42
  model.save!
41
43
  end
42
44
  end
43
45
 
44
46
  def find_model(message)
45
47
  model_class = klass.constantize
46
- if model_class.respond_to?(:ps_find_model)
47
- return model_class.ps_find_model(message)
48
- end
48
+ return model_class.ps_find_model(message) if model_class.respond_to?(:ps_find_model)
49
49
 
50
50
  model_class.where(model_identifiers(message)).first_or_initialize
51
51
  end
@@ -6,6 +6,12 @@ module PubSubModelSync
6
6
  base.extend(ClassMethods)
7
7
  end
8
8
 
9
+ # check if model was changed to skip nonsense .update!()
10
+ def ps_subscriber_changed?(_data)
11
+ validate
12
+ changed?
13
+ end
14
+
9
15
  module ClassMethods
10
16
  def ps_subscribe(attrs, actions: nil, from_klass: name, id: :id)
11
17
  settings = { id: id, from_klass: from_klass }
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PubSubModelSync
4
- VERSION = '0.4.0'
4
+ VERSION = '0.5.0.1'
5
5
  end
@@ -5,6 +5,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
5
  require 'pub_sub_model_sync/version'
6
6
 
7
7
  Gem::Specification.new do |spec|
8
+ spec.required_ruby_version = '>= 2.4' # rubocop:disable Gemspec/RequiredRubyVersion
8
9
  spec.name = 'pub_sub_model_sync'
9
10
  spec.version = PubSubModelSync::VERSION
10
11
  spec.authors = ['Owen']
@@ -32,7 +33,6 @@ Gem::Specification.new do |spec|
32
33
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
33
34
  spec.require_paths = ['lib']
34
35
 
35
- spec.add_dependency 'activesupport'
36
36
  spec.add_dependency 'rails'
37
37
 
38
38
  spec.add_development_dependency 'bundler'
metadata CHANGED
@@ -1,29 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pub_sub_model_sync
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Owen
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-05-06 00:00:00.000000000 Z
11
+ date: 2020-12-22 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: activesupport
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
13
  - !ruby/object:Gem::Dependency
28
14
  name: rails
29
15
  requirement: !ruby/object:Gem::Requirement
@@ -103,15 +89,6 @@ extra_rdoc_files: []
103
89
  files:
104
90
  - ".github/workflows/ruby.yml"
105
91
  - ".gitignore"
106
- - ".idea/.gitignore"
107
- - ".idea/.rakeTasks"
108
- - ".idea/codeStyles/codeStyleConfig.xml"
109
- - ".idea/encodings.xml"
110
- - ".idea/inspectionProfiles/Project_Default.xml"
111
- - ".idea/misc.xml"
112
- - ".idea/modules.xml"
113
- - ".idea/pub_sub_model_sync.iml"
114
- - ".idea/vcs.xml"
115
92
  - ".rspec"
116
93
  - ".rubocop.yml"
117
94
  - CHANGELOG.md
@@ -123,7 +100,11 @@ files:
123
100
  - Rakefile
124
101
  - bin/console
125
102
  - bin/setup
103
+ - gemfiles/Gemfile_4
104
+ - gemfiles/Gemfile_5
105
+ - gemfiles/Gemfile_6
126
106
  - lib/pub_sub_model_sync.rb
107
+ - lib/pub_sub_model_sync/base.rb
127
108
  - lib/pub_sub_model_sync/config.rb
128
109
  - lib/pub_sub_model_sync/connector.rb
129
110
  - lib/pub_sub_model_sync/message_processor.rb
@@ -131,6 +112,7 @@ files:
131
112
  - lib/pub_sub_model_sync/mock_google_service.rb
132
113
  - lib/pub_sub_model_sync/mock_kafka_service.rb
133
114
  - lib/pub_sub_model_sync/mock_rabbit_service.rb
115
+ - lib/pub_sub_model_sync/payload.rb
134
116
  - lib/pub_sub_model_sync/publisher.rb
135
117
  - lib/pub_sub_model_sync/publisher_concern.rb
136
118
  - lib/pub_sub_model_sync/railtie.rb
@@ -151,7 +133,7 @@ metadata:
151
133
  homepage_uri: https://github.com/owen2345/pub_sub_model_sync
152
134
  source_code_uri: https://github.com/owen2345/pub_sub_model_sync
153
135
  changelog_uri: https://github.com/owen2345/pub_sub_model_sync/blob/master/CHANGELOG.md
154
- post_install_message:
136
+ post_install_message:
155
137
  rdoc_options: []
156
138
  require_paths:
157
139
  - lib
@@ -159,7 +141,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
159
141
  requirements:
160
142
  - - ">="
161
143
  - !ruby/object:Gem::Version
162
- version: '0'
144
+ version: '2.4'
163
145
  required_rubygems_version: !ruby/object:Gem::Requirement
164
146
  requirements:
165
147
  - - ">="
@@ -167,7 +149,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
167
149
  version: '0'
168
150
  requirements: []
169
151
  rubygems_version: 3.0.8
170
- signing_key:
152
+ signing_key:
171
153
  specification_version: 4
172
154
  summary: Permit to sync models between apps through pub/sub
173
155
  test_files: []
@@ -1,8 +0,0 @@
1
- # Default ignored files
2
- /shelf/
3
- /workspace.xml
4
- # Datasource local storage ignored files
5
- /dataSources/
6
- /dataSources.local.xml
7
- # Editor-based HTTP Client requests
8
- /httpRequests/
@@ -1,7 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <Settings><!--This file was automatically generated by Ruby plugin.
3
- You are allowed to:
4
- 1. Remove rake task
5
- 2. Add existing rake tasks
6
- To add existing rake tasks automatically delete this file and reload the project.
7
- --><RakeGroup description="" fullCmd="" taksId="rake"><RakeTask description="Build pub_sub_model_sync-0.1.0.gem into the pkg directory" fullCmd="build" taksId="build" /><RakeTask description="Remove any temporary products" fullCmd="clean" taksId="clean" /><RakeTask description="Remove any generated files" fullCmd="clobber" taksId="clobber" /><RakeTask description="Build and install pub_sub_model_sync-0.1.0.gem into system gems" fullCmd="install" taksId="install" /><RakeGroup description="" fullCmd="" taksId="install"><RakeTask description="Build and install pub_sub_model_sync-0.1.0.gem into system gems without network access" fullCmd="install:local" taksId="local" /></RakeGroup><RakeTask description="Create tag v0.1.0 and build and push pub_sub_model_sync-0.1.0.gem to TODO: Set to 'http://mygemserver.com'" fullCmd="release[remote]" taksId="release[remote]" /><RakeTask description="Run RSpec code examples" fullCmd="spec" taksId="spec" /><RakeTask description="" fullCmd="default" taksId="default" /><RakeTask description="" fullCmd="release" taksId="release" /><RakeGroup description="" fullCmd="" taksId="release"><RakeTask description="" fullCmd="release:guard_clean" taksId="guard_clean" /><RakeTask description="" fullCmd="release:rubygem_push" taksId="rubygem_push" /><RakeTask description="" fullCmd="release:source_control_push" taksId="source_control_push" /></RakeGroup></RakeGroup></Settings>
@@ -1,5 +0,0 @@
1
- <component name="ProjectCodeStyleConfiguration">
2
- <state>
3
- <option name="PREFERRED_PROJECT_CODE_STYLE" value="Default" />
4
- </state>
5
- </component>
@@ -1,4 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="Encoding" addBOMForNewFiles="with NO BOM" />
4
- </project>
@@ -1,16 +0,0 @@
1
- <component name="InspectionProjectProfileManager">
2
- <profile version="1.0">
3
- <option name="myName" value="Project Default" />
4
- <inspection_tool class="Rubocop" enabled="true" level="WARNING" enabled_by_default="true">
5
- <option name="mySeverityMap">
6
- <map>
7
- <entry key="convention" value="ERROR" />
8
- <entry key="error" value="ERROR" />
9
- <entry key="fatal" value="ERROR" />
10
- <entry key="refactor" value="ERROR" />
11
- <entry key="warning" value="ERROR" />
12
- </map>
13
- </option>
14
- </inspection_tool>
15
- </profile>
16
- </component>
@@ -1,7 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="JavaScriptSettings">
4
- <option name="languageLevel" value="ES6" />
5
- </component>
6
- <component name="ProjectRootManager" version="2" project-jdk-name="RVM: ruby-2.5.3" project-jdk-type="RUBY_SDK" />
7
- </project>
@@ -1,8 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="ProjectModuleManager">
4
- <modules>
5
- <module fileurl="file://$PROJECT_DIR$/.idea/pub_sub_model_sync.iml" filepath="$PROJECT_DIR$/.idea/pub_sub_model_sync.iml" />
6
- </modules>
7
- </component>
8
- </project>
@@ -1,96 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <module type="RUBY_MODULE" version="4">
3
- <component name="ModuleRunConfigurationManager">
4
- <shared />
5
- </component>
6
- <component name="NewModuleRootManager">
7
- <content url="file://$MODULE_DIR$" />
8
- <orderEntry type="jdk" jdkName="RVM: ruby-2.6.5" jdkType="RUBY_SDK" />
9
- <orderEntry type="sourceFolder" forTests="false" />
10
- <orderEntry type="library" scope="PROVIDED" name="actioncable (v6.0.2.2, RVM: ruby-2.6.5) [gem]" level="application" />
11
- <orderEntry type="library" scope="PROVIDED" name="actionmailbox (v6.0.2.2, RVM: ruby-2.6.5) [gem]" level="application" />
12
- <orderEntry type="library" scope="PROVIDED" name="actionmailer (v6.0.2.2, RVM: ruby-2.6.5) [gem]" level="application" />
13
- <orderEntry type="library" scope="PROVIDED" name="actionpack (v6.0.2.2, RVM: ruby-2.6.5) [gem]" level="application" />
14
- <orderEntry type="library" scope="PROVIDED" name="actiontext (v6.0.2.2, RVM: ruby-2.6.5) [gem]" level="application" />
15
- <orderEntry type="library" scope="PROVIDED" name="actionview (v6.0.2.2, RVM: ruby-2.6.5) [gem]" level="application" />
16
- <orderEntry type="library" scope="PROVIDED" name="activejob (v6.0.2.2, RVM: ruby-2.6.5) [gem]" level="application" />
17
- <orderEntry type="library" scope="PROVIDED" name="activemodel (v6.0.2.2, RVM: ruby-2.6.5) [gem]" level="application" />
18
- <orderEntry type="library" scope="PROVIDED" name="activerecord (v6.0.2.2, RVM: ruby-2.6.5) [gem]" level="application" />
19
- <orderEntry type="library" scope="PROVIDED" name="activestorage (v6.0.2.2, RVM: ruby-2.6.5) [gem]" level="application" />
20
- <orderEntry type="library" scope="PROVIDED" name="activesupport (v6.0.2.2, RVM: ruby-2.6.5) [gem]" level="application" />
21
- <orderEntry type="library" scope="PROVIDED" name="addressable (v2.7.0, RVM: ruby-2.6.5) [gem]" level="application" />
22
- <orderEntry type="library" scope="PROVIDED" name="amq-protocol (v2.3.0, RVM: ruby-2.6.5) [gem]" level="application" />
23
- <orderEntry type="library" scope="PROVIDED" name="ast (v2.4.0, RVM: ruby-2.6.5) [gem]" level="application" />
24
- <orderEntry type="library" scope="PROVIDED" name="builder (v3.2.4, RVM: ruby-2.6.5) [gem]" level="application" />
25
- <orderEntry type="library" scope="PROVIDED" name="bundler (v2.1.4, RVM: ruby-2.6.5) [gem]" level="application" />
26
- <orderEntry type="library" scope="PROVIDED" name="bunny (v2.14.3, RVM: ruby-2.6.5) [gem]" level="application" />
27
- <orderEntry type="library" scope="PROVIDED" name="concurrent-ruby (v1.1.6, RVM: ruby-2.6.5) [gem]" level="application" />
28
- <orderEntry type="library" scope="PROVIDED" name="crass (v1.0.6, RVM: ruby-2.6.5) [gem]" level="application" />
29
- <orderEntry type="library" scope="PROVIDED" name="database_cleaner (v1.8.4, RVM: ruby-2.6.5) [gem]" level="application" />
30
- <orderEntry type="library" scope="PROVIDED" name="database_cleaner-active_record (v1.8.0, RVM: ruby-2.6.5) [gem]" level="application" />
31
- <orderEntry type="library" scope="PROVIDED" name="diff-lcs (v1.3, RVM: ruby-2.6.5) [gem]" level="application" />
32
- <orderEntry type="library" scope="PROVIDED" name="digest-crc (v0.5.1, RVM: ruby-2.6.5) [gem]" level="application" />
33
- <orderEntry type="library" scope="PROVIDED" name="erubi (v1.9.0, RVM: ruby-2.6.5) [gem]" level="application" />
34
- <orderEntry type="library" scope="PROVIDED" name="faraday (v0.17.3, RVM: ruby-2.6.5) [gem]" level="application" />
35
- <orderEntry type="library" scope="PROVIDED" name="globalid (v0.4.2, RVM: ruby-2.6.5) [gem]" level="application" />
36
- <orderEntry type="library" scope="PROVIDED" name="google-cloud-core (v1.3.2, RVM: ruby-2.6.5) [gem]" level="application" />
37
- <orderEntry type="library" scope="PROVIDED" name="google-cloud-env (v1.2.1, RVM: ruby-2.6.5) [gem]" level="application" />
38
- <orderEntry type="library" scope="PROVIDED" name="google-cloud-pubsub (v1.0.2, RVM: ruby-2.6.5) [gem]" level="application" />
39
- <orderEntry type="library" scope="PROVIDED" name="google-gax (v1.7.1, RVM: ruby-2.6.5) [gem]" level="application" />
40
- <orderEntry type="library" scope="PROVIDED" name="google-protobuf (v3.11.4, RVM: ruby-2.6.5) [gem]" level="application" />
41
- <orderEntry type="library" scope="PROVIDED" name="googleapis-common-protos (v1.3.9, RVM: ruby-2.6.5) [gem]" level="application" />
42
- <orderEntry type="library" scope="PROVIDED" name="googleapis-common-protos-types (v1.0.4, RVM: ruby-2.6.5) [gem]" level="application" />
43
- <orderEntry type="library" scope="PROVIDED" name="googleauth (v0.9.0, RVM: ruby-2.6.5) [gem]" level="application" />
44
- <orderEntry type="library" scope="PROVIDED" name="grpc (v1.27.0, RVM: ruby-2.6.5) [gem]" level="application" />
45
- <orderEntry type="library" scope="PROVIDED" name="grpc-google-iam-v1 (v0.6.9, RVM: ruby-2.6.5) [gem]" level="application" />
46
- <orderEntry type="library" scope="PROVIDED" name="i18n (v1.8.2, RVM: ruby-2.6.5) [gem]" level="application" />
47
- <orderEntry type="library" scope="PROVIDED" name="jaro_winkler (v1.5.4, RVM: ruby-2.6.5) [gem]" level="application" />
48
- <orderEntry type="library" scope="PROVIDED" name="jwt (v2.2.1, RVM: ruby-2.6.5) [gem]" level="application" />
49
- <orderEntry type="library" scope="PROVIDED" name="loofah (v2.5.0, RVM: ruby-2.6.5) [gem]" level="application" />
50
- <orderEntry type="library" scope="PROVIDED" name="mail (v2.7.1, RVM: ruby-2.6.5) [gem]" level="application" />
51
- <orderEntry type="library" scope="PROVIDED" name="marcel (v0.3.3, RVM: ruby-2.6.5) [gem]" level="application" />
52
- <orderEntry type="library" scope="PROVIDED" name="memoist (v0.16.2, RVM: ruby-2.6.5) [gem]" level="application" />
53
- <orderEntry type="library" scope="PROVIDED" name="method_source (v1.0.0, RVM: ruby-2.6.5) [gem]" level="application" />
54
- <orderEntry type="library" scope="PROVIDED" name="mimemagic (v0.3.4, RVM: ruby-2.6.5) [gem]" level="application" />
55
- <orderEntry type="library" scope="PROVIDED" name="mini_mime (v1.0.2, RVM: ruby-2.6.5) [gem]" level="application" />
56
- <orderEntry type="library" scope="PROVIDED" name="mini_portile2 (v2.4.0, RVM: ruby-2.6.5) [gem]" level="application" />
57
- <orderEntry type="library" scope="PROVIDED" name="minitest (v5.14.0, RVM: ruby-2.6.5) [gem]" level="application" />
58
- <orderEntry type="library" scope="PROVIDED" name="multi_json (v1.14.1, RVM: ruby-2.6.5) [gem]" level="application" />
59
- <orderEntry type="library" scope="PROVIDED" name="multipart-post (v2.1.1, RVM: ruby-2.6.5) [gem]" level="application" />
60
- <orderEntry type="library" scope="PROVIDED" name="nio4r (v2.5.2, RVM: ruby-2.6.5) [gem]" level="application" />
61
- <orderEntry type="library" scope="PROVIDED" name="nokogiri (v1.10.9, RVM: ruby-2.6.5) [gem]" level="application" />
62
- <orderEntry type="library" scope="PROVIDED" name="os (v1.0.1, RVM: ruby-2.6.5) [gem]" level="application" />
63
- <orderEntry type="library" scope="PROVIDED" name="parallel (v1.19.1, RVM: ruby-2.6.5) [gem]" level="application" />
64
- <orderEntry type="library" scope="PROVIDED" name="parser (v2.7.0.4, RVM: ruby-2.6.5) [gem]" level="application" />
65
- <orderEntry type="library" scope="PROVIDED" name="public_suffix (v4.0.3, RVM: ruby-2.6.5) [gem]" level="application" />
66
- <orderEntry type="library" scope="PROVIDED" name="rack (v2.2.2, RVM: ruby-2.6.5) [gem]" level="application" />
67
- <orderEntry type="library" scope="PROVIDED" name="rack-test (v1.1.0, RVM: ruby-2.6.5) [gem]" level="application" />
68
- <orderEntry type="library" scope="PROVIDED" name="rails (v6.0.2.2, RVM: ruby-2.6.5) [gem]" level="application" />
69
- <orderEntry type="library" scope="PROVIDED" name="rails-dom-testing (v2.0.3, RVM: ruby-2.6.5) [gem]" level="application" />
70
- <orderEntry type="library" scope="PROVIDED" name="rails-html-sanitizer (v1.3.0, RVM: ruby-2.6.5) [gem]" level="application" />
71
- <orderEntry type="library" scope="PROVIDED" name="railties (v6.0.2.2, RVM: ruby-2.6.5) [gem]" level="application" />
72
- <orderEntry type="library" scope="PROVIDED" name="rainbow (v3.0.0, RVM: ruby-2.6.5) [gem]" level="application" />
73
- <orderEntry type="library" scope="PROVIDED" name="rake (v13.0.1, RVM: ruby-2.6.5) [gem]" level="application" />
74
- <orderEntry type="library" scope="PROVIDED" name="rexml (v3.2.4, RVM: ruby-2.6.5) [gem]" level="application" />
75
- <orderEntry type="library" scope="PROVIDED" name="rly (v0.2.3, RVM: ruby-2.6.5) [gem]" level="application" />
76
- <orderEntry type="library" scope="PROVIDED" name="rspec (v3.9.0, RVM: ruby-2.6.5) [gem]" level="application" />
77
- <orderEntry type="library" scope="PROVIDED" name="rspec-core (v3.9.1, RVM: ruby-2.6.5) [gem]" level="application" />
78
- <orderEntry type="library" scope="PROVIDED" name="rspec-expectations (v3.9.0, RVM: ruby-2.6.5) [gem]" level="application" />
79
- <orderEntry type="library" scope="PROVIDED" name="rspec-mocks (v3.9.1, RVM: ruby-2.6.5) [gem]" level="application" />
80
- <orderEntry type="library" scope="PROVIDED" name="rspec-support (v3.9.2, RVM: ruby-2.6.5) [gem]" level="application" />
81
- <orderEntry type="library" scope="PROVIDED" name="rubocop (v0.80.1, RVM: ruby-2.6.5) [gem]" level="application" />
82
- <orderEntry type="library" scope="PROVIDED" name="ruby-kafka (v1.0.0, RVM: ruby-2.6.5) [gem]" level="application" />
83
- <orderEntry type="library" scope="PROVIDED" name="ruby-progressbar (v1.10.1, RVM: ruby-2.6.5) [gem]" level="application" />
84
- <orderEntry type="library" scope="PROVIDED" name="signet (v0.11.0, RVM: ruby-2.6.5) [gem]" level="application" />
85
- <orderEntry type="library" scope="PROVIDED" name="sprockets (v4.0.0, RVM: ruby-2.6.5) [gem]" level="application" />
86
- <orderEntry type="library" scope="PROVIDED" name="sprockets-rails (v3.2.1, RVM: ruby-2.6.5) [gem]" level="application" />
87
- <orderEntry type="library" scope="PROVIDED" name="sqlite3 (v1.4.2, RVM: ruby-2.6.5) [gem]" level="application" />
88
- <orderEntry type="library" scope="PROVIDED" name="thor (v1.0.1, RVM: ruby-2.6.5) [gem]" level="application" />
89
- <orderEntry type="library" scope="PROVIDED" name="thread_safe (v0.3.6, RVM: ruby-2.6.5) [gem]" level="application" />
90
- <orderEntry type="library" scope="PROVIDED" name="tzinfo (v1.2.7, RVM: ruby-2.6.5) [gem]" level="application" />
91
- <orderEntry type="library" scope="PROVIDED" name="unicode-display_width (v1.6.1, RVM: ruby-2.6.5) [gem]" level="application" />
92
- <orderEntry type="library" scope="PROVIDED" name="websocket-driver (v0.7.1, RVM: ruby-2.6.5) [gem]" level="application" />
93
- <orderEntry type="library" scope="PROVIDED" name="websocket-extensions (v0.1.4, RVM: ruby-2.6.5) [gem]" level="application" />
94
- <orderEntry type="library" scope="PROVIDED" name="zeitwerk (v2.3.0, RVM: ruby-2.6.5) [gem]" level="application" />
95
- </component>
96
- </module>
@@ -1,6 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="VcsDirectoryMappings">
4
- <mapping directory="$PROJECT_DIR$" vcs="Git" />
5
- </component>
6
- </project>