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.
- checksums.yaml +4 -4
- data/.github/workflows/ruby.yml +30 -8
- data/.rubocop.yml +6 -1
- data/CHANGELOG.md +27 -0
- data/Gemfile +1 -1
- data/Gemfile.lock +25 -23
- data/README.md +55 -29
- data/gemfiles/Gemfile_4 +16 -0
- data/gemfiles/Gemfile_5 +14 -0
- data/gemfiles/Gemfile_6 +14 -0
- data/lib/pub_sub_model_sync.rb +1 -0
- data/lib/pub_sub_model_sync/base.rb +17 -0
- data/lib/pub_sub_model_sync/config.rb +18 -3
- data/lib/pub_sub_model_sync/connector.rb +1 -0
- data/lib/pub_sub_model_sync/message_processor.rb +27 -21
- data/lib/pub_sub_model_sync/message_publisher.rb +25 -9
- data/lib/pub_sub_model_sync/mock_rabbit_service.rb +5 -0
- data/lib/pub_sub_model_sync/payload.rb +45 -0
- data/lib/pub_sub_model_sync/publisher.rb +1 -0
- data/lib/pub_sub_model_sync/publisher_concern.rb +3 -1
- data/lib/pub_sub_model_sync/service_base.rb +25 -13
- data/lib/pub_sub_model_sync/service_google.rb +4 -18
- data/lib/pub_sub_model_sync/service_kafka.rb +4 -17
- data/lib/pub_sub_model_sync/service_rabbit.rb +20 -27
- data/lib/pub_sub_model_sync/subscriber.rb +3 -3
- data/lib/pub_sub_model_sync/subscriber_concern.rb +6 -0
- data/lib/pub_sub_model_sync/version.rb +1 -1
- data/pub_sub_model_sync.gemspec +1 -1
- metadata +11 -29
- data/.idea/.gitignore +0 -8
- data/.idea/.rakeTasks +0 -7
- data/.idea/codeStyles/codeStyleConfig.xml +0 -5
- data/.idea/encodings.xml +0 -4
- data/.idea/inspectionProfiles/Project_Default.xml +0 -16
- data/.idea/misc.xml +0 -7
- data/.idea/modules.xml +0 -8
- data/.idea/pub_sub_model_sync.iml +0 -96
- 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
|
-
|
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(
|
31
|
-
|
32
|
-
deliver_data(
|
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
|
-
|
40
|
-
|
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
|
-
{
|
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
|
-
|
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
|
-
|
70
|
+
subscribe_to_exchange
|
73
71
|
end
|
74
72
|
|
75
|
-
def
|
76
|
-
@topic = channel.
|
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
|
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 }
|
data/pub_sub_model_sync.gemspec
CHANGED
@@ -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
|
+
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-
|
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: '
|
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: []
|
data/.idea/.gitignore
DELETED
data/.idea/.rakeTasks
DELETED
@@ -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>
|
data/.idea/encodings.xml
DELETED
@@ -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>
|
data/.idea/misc.xml
DELETED
@@ -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>
|
data/.idea/modules.xml
DELETED
@@ -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>
|