pub_sub_model_sync 0.4.0 → 0.4.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: 733ca5e3413a098031be8a2ca5d0c3df9bf972ed8cdbf8954a1968c517ac81f4
4
- data.tar.gz: a4c419efb5446e8a8632942936589b1b0a4bad2ab913a9ddd34cffb2bfdf8f2a
3
+ metadata.gz: a910b6aaf6b7051bac254fe6ae47a718c52bf963e6226192f3f5e7f32053cca7
4
+ data.tar.gz: dae3eb67c4b2aff89864688365c5e73a4328c6e477d3e1e8595ddfee3201e697
5
5
  SHA512:
6
- metadata.gz: 3054010e2bad46d8d2377a01757b0f52abc31f27832ddc150b12f3fb5d05f50a9aa87aa1bcafff7237918ecdc3d4cc637033dec76d32d7991d69c36d5e949ea8
7
- data.tar.gz: 734be5a88e56fa6f508f1c37acdada68cf3b53db5b2d5b3d612616c27a63f4d46c305d0d2148d656c970d0a6cc9e25ec6840ead4c4a74b1c4f39b777a791e2cc
6
+ metadata.gz: f74d72720c029d27746a44e870e440458eeb7d09bd4cd3768dd024abe52881c43c1cdb1601344b92e6e8d012e098b72faab592a115692e897d0808e558958fcd
7
+ data.tar.gz: e8613ccd802d0e47eca855e5ed216cba50a75d19c0aea0d3171cfede8bb26cad3b0ad7266a1f15f584c274d7aa3458af375594043afb43c179e941847bc49467
@@ -6,28 +6,45 @@ on:
6
6
  - master
7
7
  pull_request:
8
8
 
9
-
10
9
  jobs:
11
10
  build:
12
11
  name: Tests and Code Style
13
12
  runs-on: ubuntu-latest
13
+ strategy:
14
+ matrix:
15
+ ruby: [2.4, 2.5, 2.6]
16
+ rails: [4, 5, 6]
17
+ include:
18
+ - ruby: 2.7
19
+ rails: 6
20
+ exclude: # rails 6 requires ruby >= 2.5
21
+ - ruby: 2.4
22
+ rails: 6
14
23
 
15
24
  steps:
16
25
  - uses: actions/checkout@v2
17
- - name: Set up Ruby 2.6
26
+ - name: Set up Ruby
18
27
  uses: actions/setup-ruby@v1
19
28
  with:
20
- ruby-version: 2.6.x
21
-
29
+ ruby-version: ${{ matrix.ruby }}
22
30
  - name: Install sqlite3
23
31
  run: sudo apt-get install libsqlite3-dev
24
32
 
25
- - name: Bundle install
33
+ - name: Install bundler
34
+ env:
35
+ GEMFILE_PATH: gemfiles/Gemfile_${{ matrix.rails }}
36
+ RAILS_V: ${{ matrix.rails }}
26
37
  run: |
27
- gem install bundler
28
- bundle install --jobs 4 --retry 3
38
+ rm -f Gemfile.lock && rm -f Gemfile
39
+ cp $GEMFILE_PATH ./Gemfile
40
+ bundler_v='2.1.4'
41
+ if [ $RAILS_V = "4" ]; then bundler_v="1.16.6"; fi
42
+ gem install bundler -v "~> $bundler_v"
43
+ bundle _${bundler_v}_ install --jobs 4 --retry 3
44
+
29
45
  - name: Tests (rspec)
30
46
  run: |
31
47
  bundle exec rspec
48
+
32
49
  - name: Code style (Rubocop)
33
50
  run: bundle exec rubocop
data/.rubocop.yml CHANGED
@@ -6,13 +6,11 @@ AllCops:
6
6
  - 'Gemfile'
7
7
  - 'Rakefile'
8
8
  - 'bin/*'
9
- TargetRubyVersion: 2.3
10
9
 
11
10
  Metrics/BlockLength:
12
11
  Exclude:
13
12
  - 'spec/**/*.rb'
14
13
 
15
-
16
14
  Style/SymbolArray:
17
15
  Exclude:
18
16
  - 'Gemfile'
data/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Change Log
2
2
 
3
+ # 0.4.1 (May 06, 2020)
4
+ - chore: improve log messages
5
+ - feat: do not update model if no changes
6
+ - feat: skip publisher after updating if no changes
7
+
8
+
3
9
  # 0.4.0 (May 06, 2020)
4
10
  - rename as_klass to from_klass and as_action to from_action for subscribers
5
11
  - refactor subscribers to be independent
data/Gemfile.lock CHANGED
@@ -1,8 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- pub_sub_model_sync (0.4.0)
5
- activesupport
4
+ pub_sub_model_sync (0.4.1)
6
5
  rails
7
6
 
8
7
  GEM
data/README.md CHANGED
@@ -118,7 +118,7 @@ class User < ActiveRecord::Base
118
118
  puts 'Class message called through custom_greeting'
119
119
  end
120
120
 
121
- # def self.ps_find_model(data, settings)
121
+ # def self.ps_find_model(data)
122
122
  # where(email: data[:email], ...).first_or_initialize
123
123
  # end
124
124
  end
@@ -126,24 +126,18 @@ end
126
126
 
127
127
  Note: Be careful with collision of names
128
128
  ```
129
- class User
130
- # ps_publish %i[name_data:name name:key] # key will be replaced with name_data
131
- ps_publish %i[name_data:name key_data:key] # use alias to avoid collision
132
-
133
- def key_data
134
- name
135
- end
136
- end
129
+ # ps_publish %i[name_data:name name:key] # key will be replaced with name_data
130
+ ps_publish %i[name_data:name key_data:key] # use alias to avoid collision
137
131
  ```
138
132
 
139
133
  ## API
140
134
  ### Subscribers
141
- - Permit to configure class level listeners
135
+ - Permit to configure class level subscriptions
142
136
  ```ps_class_subscribe(action_name, from_action: nil, from_klass: nil)```
143
137
  * from_action: (Optional) Source method name
144
138
  * from_klass: (Optional) Source class name
145
139
 
146
- - Permit to configure instance level listeners (CRUD)
140
+ - Permit to configure instance level subscriptions (CRUD)
147
141
  ```ps_subscribe(attrs, from_klass: nil, actions: nil, id: nil)```
148
142
  * attrs: (Array/Required) Array of all attributes to be synced
149
143
  * from_klass: (String/Optional) Source class name (Instead of the model class name, will use this value)
@@ -151,17 +145,16 @@ end
151
145
  * id: (Sym|Array/Optional, default: id) Attr identifier(s) to find the corresponding model
152
146
 
153
147
  - Permit to configure a custom model finder
154
- ```ps_find_model(data, settings)```
148
+ ```ps_find_model(data)```
155
149
  * data: (Hash) Data received from sync
156
- * settings: (Hash(:klass, :action)) Class and action name from sync
157
150
  Must return an existent or a new model object
158
151
 
159
152
  - Get crud subscription configured for the class
160
153
  ```User.ps_subscriber(action_name)```
161
154
  * action_name (default :create, :sym): can be :create, :update, :destroy
162
155
 
163
- - Inspect all configured listeners
164
- ```PubSubModelSync::Config.listeners```
156
+ - Inspect all configured subscribers
157
+ ```PubSubModelSync::Config.subscribers```
165
158
 
166
159
  ### Publishers
167
160
  - Permit to configure crud publishers
@@ -172,6 +165,7 @@ end
172
165
 
173
166
  - Permit to cancel sync called after create/update/destroy (Before initializing sync service)
174
167
  ```model.ps_skip_callback?(action)```
168
+ Default: False
175
169
  Note: Return true to cancel sync
176
170
 
177
171
  - Callback called before preparing data for sync (Permit to stop sync)
@@ -0,0 +1,16 @@
1
+ source "https://rubygems.org"
2
+
3
+ gem 'rubocop'
4
+ gem 'bunny' # rabbit-mq
5
+ gem 'google-cloud-pubsub' # google pub/sub
6
+ gem 'ruby-kafka' # kafka pub/sub
7
+ gem 'rails', '~> 4'
8
+ gem 'bundler'
9
+ gem 'sqlite3', '1.3.13'
10
+
11
+ group :test do
12
+ gem 'database_cleaner-active_record'
13
+ end
14
+
15
+ # Specify your gem's dependencies in pub_sub_model_sync.gemspec
16
+ gemspec
@@ -0,0 +1,14 @@
1
+ source "https://rubygems.org"
2
+
3
+ gem 'rubocop'
4
+ gem 'bunny' # rabbit-mq
5
+ gem 'google-cloud-pubsub' # google pub/sub
6
+ gem 'ruby-kafka' # kafka pub/sub
7
+ gem 'rails', '~> 5'
8
+
9
+ group :test do
10
+ gem 'database_cleaner-active_record'
11
+ end
12
+
13
+ # Specify your gem's dependencies in pub_sub_model_sync.gemspec
14
+ gemspec
@@ -0,0 +1,14 @@
1
+ source "https://rubygems.org"
2
+
3
+ gem 'rubocop'
4
+ gem 'bunny' # rabbit-mq
5
+ gem 'google-cloud-pubsub' # google pub/sub
6
+ gem 'ruby-kafka' # kafka pub/sub
7
+ gem 'rails', '~> 6'
8
+
9
+ group :test do
10
+ gem 'database_cleaner-active_record'
11
+ end
12
+
13
+ # Specify your gem's dependencies in pub_sub_model_sync.gemspec
14
+ gemspec
@@ -11,6 +11,7 @@ module PubSubModelSync
11
11
  false
12
12
  end
13
13
 
14
+ # TODO: make it using respond_to?(:ps_skip_sync?)
14
15
  # before preparing data to sync
15
16
  def ps_skip_sync?(_action)
16
17
  false
@@ -63,7 +64,8 @@ module PubSubModelSync
63
64
 
64
65
  def ps_register_callback(action, publisher)
65
66
  after_commit(on: action) do |model|
66
- unless model.ps_skip_callback?(action)
67
+ if !(action == :update && previous_changes.empty?) &&
68
+ !model.ps_skip_callback?(action)
67
69
  klass = PubSubModelSync::MessagePublisher
68
70
  klass.publish_model(model, action.to_sym, publisher)
69
71
  end
@@ -29,11 +29,11 @@ module PubSubModelSync
29
29
  end
30
30
 
31
31
  def publish(data, attributes)
32
- log("Publishing message: #{[data, attributes]}")
32
+ log("Publishing message: #{[attributes, data]}")
33
33
  payload = { data: data, attributes: attributes }.to_json
34
34
  topic.publish(payload, { SERVICE_KEY => true })
35
35
  rescue => e
36
- info = [data, attributes, e.message, e.backtrace]
36
+ info = [attributes, data, e.message, e.backtrace]
37
37
  log("Error publishing: #{info}", :error)
38
38
  end
39
39
 
@@ -29,12 +29,12 @@ module PubSubModelSync
29
29
  end
30
30
 
31
31
  def publish(data, attributes)
32
- log("Publishing: #{[data, attributes]}")
32
+ log("Publishing: #{[attributes, data]}")
33
33
  payload = { data: data, attributes: attributes }
34
34
  producer.produce(payload.to_json, message_settings)
35
35
  producer.deliver_messages
36
36
  rescue => e
37
- info = [data, attributes, e.message, e.backtrace]
37
+ info = [attributes, data, e.message, e.backtrace]
38
38
  log("Error publishing: #{info}", :error)
39
39
  end
40
40
 
@@ -28,7 +28,7 @@ module PubSubModelSync
28
28
  end
29
29
 
30
30
  def publish(data, attributes)
31
- log("Publishing: #{[data, attributes]}")
31
+ log("Publishing: #{[attributes, data]}")
32
32
  deliver_data(data, attributes)
33
33
  # TODO: max retry
34
34
  rescue Timeout::Error => e
@@ -36,7 +36,7 @@ module PubSubModelSync
36
36
  initialize
37
37
  retry
38
38
  rescue => e
39
- info = [data, attributes, e.message, e.backtrace]
39
+ info = [attributes, data, e.message, e.backtrace]
40
40
  log("Error publishing: #{info}", :error)
41
41
  end
42
42
 
@@ -37,6 +37,8 @@ module PubSubModelSync
37
37
  model.destroy!
38
38
  else
39
39
  populate_model(model, message)
40
+ return if action == :update && !model.changed? # skip if no changes
41
+
40
42
  model.save!
41
43
  end
42
44
  end
@@ -57,6 +59,7 @@ module PubSubModelSync
57
59
 
58
60
  def populate_model(model, message)
59
61
  values = message.slice(*attrs)
62
+ puts "===========values: #{values.inspect}-------#{message.inspect}"
60
63
  values.each do |attr, value|
61
64
  model.send("#{attr}=", value)
62
65
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PubSubModelSync
4
- VERSION = '0.4.0'
4
+ VERSION = '0.4.1'
5
5
  end
@@ -32,7 +32,6 @@ Gem::Specification.new do |spec|
32
32
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
33
33
  spec.require_paths = ['lib']
34
34
 
35
- spec.add_dependency 'activesupport'
36
35
  spec.add_dependency 'rails'
37
36
 
38
37
  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.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Owen
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-05-06 00:00:00.000000000 Z
11
+ date: 2020-05-12 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,6 +100,9 @@ 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
127
107
  - lib/pub_sub_model_sync/config.rb
128
108
  - lib/pub_sub_model_sync/connector.rb
data/.idea/.gitignore DELETED
@@ -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/
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>
@@ -1,5 +0,0 @@
1
- <component name="ProjectCodeStyleConfiguration">
2
- <state>
3
- <option name="PREFERRED_PROJECT_CODE_STYLE" value="Default" />
4
- </state>
5
- </component>
data/.idea/encodings.xml DELETED
@@ -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>
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>
data/.idea/vcs.xml DELETED
@@ -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>