zelastic 0.6.2 → 0.7.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2f54a69201807f3ba79aa72f7ea5b51c1adfebcdc06d4b51f4662f49c96bc0c7
4
- data.tar.gz: '0480ef88c0c3f3f170c18712d2e9208b4fbcd0f7614abbb9cb9b89d2636443be'
3
+ metadata.gz: 82591810835538bb7b3ede975d3731fc2b3300dfa9934f72f81ed323458c8145
4
+ data.tar.gz: c7631b4cb764dbfffdf4efd35296b9b9c5d5ce790c03464c7ba584ad060cae47
5
5
  SHA512:
6
- metadata.gz: 4ba1d3c04f92728c3a414a3b09551117c664eeb3e1ec9e4f395bb393b33cc8de55bb4239da17fd98be0a8171f3ae038a769f3a2b93147abf42fcac8a13ab0254
7
- data.tar.gz: 954fe26c4ed02e57e00ae29c82f26b1eba33f6c637e520db7610a220a851b9d158f4052a9323c506804247b8f527115ce808401cb42c1a893ab93d64f9025a34
6
+ metadata.gz: 43647ec72340be7b8a4121eb7190d74844ad3284f38457dbe6948ddd81d4ed46fe9c2c7b9b8ae057db07b506efb5c2e7393f5eba43e209ecbf49dd58ec22b70c
7
+ data.tar.gz: 1b834cba1e6bffd46e108528b3d0eac68ca3766b86c5a28741db3c838b71d9c509cd1e42ac6dd82ff5f9ed7fc99a7cf1534507fc48b3fd1b388980ebbf0b33cd
data/.circleci/config.yml CHANGED
@@ -1,88 +1,47 @@
1
- references:
2
- ruby: &ruby
3
- image: carwow/ruby-ci:2.6
4
- environment:
5
- ELASTICSEARCH_URL: http://localhost:9200
6
-
7
- elasticsearch_container: &elasticsearch_container
8
- image: carwow/elasticsearch-ci:5.5.1
1
+ version: 2.1
9
2
 
10
- elasticsearch_7_container: &elasticsearch_7_container
11
- image: carwow/elasticsearch-ci:7.6.1
12
-
13
- version: 2
14
3
  jobs:
15
- bundle:
16
- working_directory: ~/zelastic
17
- docker:
18
- - *ruby
19
- steps:
20
- - checkout
21
- - restore_cache:
22
- keys:
23
- - bundle-{{ checksum "Gemfile.lock" }}
24
- - bundle-
25
- - run: |
26
- bundle config --local path vendor/bundle &&
27
- bundle check || bundle install --jobs=4 --retry=3
28
- bundle clean --force
29
- - save_cache:
30
- key: bundle-{{ checksum "Gemfile.lock" }}
31
- paths: [vendor/bundle]
32
-
33
- rubocop:
34
- working_directory: ~/zelastic
35
- docker:
36
- - *ruby
37
- steps:
38
- - checkout
39
- - restore_cache: { keys: ['bundle-{{ checksum "Gemfile.lock" }}'] }
40
- - run: bundle exec rubocop
41
-
42
- tests:
43
- working_directory: ~/zelastic
44
- docker:
45
- - *ruby
46
- - *elasticsearch_container
47
- steps:
48
- - checkout
49
- - restore_cache: { keys: ['bundle-{{ checksum "Gemfile.lock" }}'] }
50
- - run:
51
- name: Wait for ES to be ready
52
- command: |
53
- until curl $ELASTICSEARCH_URL/_cat/health | egrep '(green|yellow)' 2>&1 > /dev/null; do
54
- echo -n .
55
- sleep 1
56
- done
57
- - run: |
58
- bundle exec rspec --pattern "**/*_spec.rb" --format "progress"
59
-
60
- tests_7:
61
- working_directory: ~/zelastic
4
+ test:
5
+ parameters:
6
+ ruby_version:
7
+ type: string
8
+ elasticsearch_version:
9
+ type: string
10
+ elasticsearch_gem_version:
11
+ type: string
62
12
  docker:
63
- - *ruby
64
- - *elasticsearch_7_container
13
+ - image: "cimg/ruby:<< parameters.ruby_version >>"
14
+ - image: "elasticsearch:<< parameters.elasticsearch_version >>"
15
+ environment:
16
+ "discovery.type": single-node
17
+ environment:
18
+ ELASTICSEARCH_GEM_VERSION: "<< parameters.elasticsearch_gem_version >>"
65
19
  steps:
66
20
  - checkout
67
- - restore_cache: { keys: ['bundle-{{ checksum "Gemfile.lock" }}'] }
68
- - run:
69
- name: Wait for ES to be ready
70
- command: |
71
- until curl $ELASTICSEARCH_URL/_cat/health | egrep '(green|yellow)' 2>&1 > /dev/null; do
72
- echo -n .
73
- sleep 1
74
- done
75
- - run: |
76
- bundle exec rspec --pattern "**/*_spec.rb" --format "progress"
21
+ - run: bin/setup
22
+ - run: bin/rubocop
23
+ - run: dockerize -wait http://localhost:9200 -timeout 1m
24
+ - run: bin/rspec
77
25
 
78
26
  workflows:
79
27
  version: 2
80
- build:
28
+ test:
81
29
  jobs:
82
- - bundle
83
- - rubocop:
84
- requires: [bundle]
85
- - tests:
86
- requires: [bundle]
87
- - tests_7:
88
- requires: [bundle]
30
+ - test:
31
+ name: "test with elasticsearch v7
32
+ and gem << matrix.elasticsearch_gem_version >>
33
+ and ruby v<< matrix.ruby_version >>"
34
+ elasticsearch_version: "7.17.5"
35
+ matrix:
36
+ parameters:
37
+ ruby_version: ["3.1", "2.7"]
38
+ elasticsearch_gem_version: ["~> 7", "~> 5"]
39
+ - test:
40
+ name: "test with elasticsearch v5
41
+ and gem ~> 5
42
+ and ruby v<< matrix.ruby_version >>"
43
+ elasticsearch_version: "5.6-alpine"
44
+ elasticsearch_gem_version: "~> 5"
45
+ matrix:
46
+ parameters:
47
+ ruby_version: ["3.1", "2.7"]
data/.gitignore CHANGED
@@ -6,6 +6,7 @@
6
6
  /pkg/
7
7
  /spec/reports/
8
8
  /tmp/
9
+ /Gemfile.lock
9
10
 
10
11
  # rspec failure tracking
11
12
  .rspec_status
data/.rubocop.yml CHANGED
@@ -1,24 +1,10 @@
1
- inherit_from: .rubocop_todo.yml
1
+ inherit_gem:
2
+ carwow_rubocop:
3
+ - config/default.yml
2
4
 
3
- AllCops:
4
- TargetRubyVersion: 2.4
5
+ inherit_mode:
6
+ merge:
7
+ - Exclude
5
8
 
6
- # Configuration parameters: CountComments, ExcludedMethods.
7
- Metrics/BlockLength:
8
- Exclude:
9
- - '*.gemspec'
10
- - 'spec/**/*'
11
-
12
- # Configuration parameters: CountComments.
13
- Metrics/MethodLength:
14
- Max: 18
15
-
16
- # Offense count: 2
17
- Style/Documentation:
18
- Exclude:
19
- - '**/*'
20
-
21
- # Configuration parameters: AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, IgnoredPatterns.
22
- # URISchemes: http, https
23
- Metrics/LineLength:
24
- Max: 100
9
+ Metrics:
10
+ Enabled: false
data/Gemfile CHANGED
@@ -3,3 +3,5 @@
3
3
  source 'https://rubygems.org'
4
4
 
5
5
  gemspec
6
+
7
+ gem 'elasticsearch', ENV['ELASTICSEARCH_GEM_VERSION'] if ENV['ELASTICSEARCH_GEM_VERSION']
data/bin/rspec ADDED
@@ -0,0 +1,27 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ #
5
+ # This file was generated by Bundler.
6
+ #
7
+ # The application 'rspec' is installed as part of a gem, and
8
+ # this file is here to facilitate running it.
9
+ #
10
+
11
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __dir__)
12
+
13
+ bundle_binstub = File.expand_path('bundle', __dir__)
14
+
15
+ if File.file?(bundle_binstub)
16
+ if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
17
+ load(bundle_binstub)
18
+ else
19
+ abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
20
+ Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
21
+ end
22
+ end
23
+
24
+ require 'rubygems'
25
+ require 'bundler/setup'
26
+
27
+ load Gem.bin_path('rspec-core', 'rspec')
data/bin/rubocop ADDED
@@ -0,0 +1,27 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ #
5
+ # This file was generated by Bundler.
6
+ #
7
+ # The application 'rubocop' is installed as part of a gem, and
8
+ # this file is here to facilitate running it.
9
+ #
10
+
11
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __dir__)
12
+
13
+ bundle_binstub = File.expand_path('bundle', __dir__)
14
+
15
+ if File.file?(bundle_binstub)
16
+ if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
17
+ load(bundle_binstub)
18
+ else
19
+ abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
20
+ Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
21
+ end
22
+ end
23
+
24
+ require 'rubygems'
25
+ require 'bundler/setup'
26
+
27
+ load Gem.bin_path('rubocop', 'rubocop')
@@ -42,7 +42,7 @@ module Zelastic
42
42
  def logger
43
43
  return Rails.logger if defined?(Rails)
44
44
 
45
- @logger ||= Logger.new(STDOUT)
45
+ @logger ||= Logger.new($stdout)
46
46
  end
47
47
 
48
48
  def index_definition
@@ -1,8 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Zelastic
4
- # rubocop:disable Metrics/AbcSize
5
- class IndexManager # rubocop:disable Metrics/ClassLength
4
+ class IndexManager
6
5
  extend Forwardable
7
6
 
8
7
  def initialize(config, client: nil)
@@ -37,12 +36,14 @@ module Zelastic
37
36
  remove_action =
38
37
  ({ remove: { index: old_index, alias: config.read_alias } } if old_index)
39
38
 
40
- client.indices.update_aliases(body: {
41
- actions: [
42
- remove_action,
43
- { add: { index: new_index, alias: config.read_alias } }
44
- ].compact
45
- })
39
+ client.indices.update_aliases(
40
+ body: {
41
+ actions: [
42
+ remove_action,
43
+ { add: { index: new_index, alias: config.read_alias } }
44
+ ].compact
45
+ }
46
+ )
46
47
  end
47
48
 
48
49
  def stop_dual_writes
@@ -52,14 +53,15 @@ module Zelastic
52
53
  logger.info("Currently used index is #{current_index}")
53
54
 
54
55
  other_write_indices = client.indices.get_alias(name: config.write_alias).keys
55
- .reject { |name| name == current_index }
56
+ .reject { |name| name == current_index }
56
57
 
57
58
  if other_write_indices.none?
58
59
  logger.info("No write indexes that aren't the read index. Nothing to do!")
59
60
  return
60
61
  end
61
62
  logger.info("Stopping writes to #{other_write_indices.count} old ES indices: " \
62
- "#{other_write_indices.join(', ')}")
63
+ "#{other_write_indices.join(', ')}"
64
+ )
63
65
 
64
66
  actions = other_write_indices.map do |index|
65
67
  { remove: { index: index, alias: config.write_alias } }
@@ -74,11 +76,11 @@ module Zelastic
74
76
  logger.info("Currently used index is #{current_index}")
75
77
 
76
78
  indices_to_delete = client
77
- .cat
78
- .indices(format: :json)
79
- .map { |index| index['index'] }
80
- .select { |name| name.start_with?(config.read_alias) }
81
- .reject { |name| name == current_index }
79
+ .cat
80
+ .indices(format: :json)
81
+ .map { |index| index['index'] }
82
+ .select { |name| name.start_with?(config.read_alias) }
83
+ .reject { |name| name == current_index }
82
84
 
83
85
  if indices_to_delete.none?
84
86
  logger.info('Nothing to do: no old indices')
@@ -93,6 +95,7 @@ module Zelastic
93
95
  private
94
96
 
95
97
  attr_reader :config, :client
98
+
96
99
  def_delegators :config, :logger
97
100
 
98
101
  def indexer
@@ -135,5 +138,4 @@ module Zelastic
135
138
  client.indices.exists?(index: config.read_alias)
136
139
  end
137
140
  end
138
- # rubocop:enable Metrics/AbcSize
139
141
  end
@@ -62,12 +62,13 @@ module Zelastic
62
62
  private
63
63
 
64
64
  attr_reader :config
65
+
65
66
  def_delegators :config, :logger
66
67
 
67
68
  def current_version
68
69
  config.data_source.connection
69
- .select_one('SELECT txid_snapshot_xmax(txid_current_snapshot()) as xmax')
70
- .fetch('xmax')
70
+ .select_one('SELECT txid_snapshot_xmax(txid_current_snapshot()) as xmax')
71
+ .fetch('xmax')
71
72
  end
72
73
 
73
74
  def write_indices(client)
@@ -91,13 +92,13 @@ module Zelastic
91
92
  }
92
93
  end
93
94
 
94
- def execute_bulk(client: nil, index_name: nil, refresh: false)
95
+ def execute_bulk(client: nil, index_name: nil, refresh: false, &block)
95
96
  clients = Array(client || config.clients)
96
97
 
97
98
  clients.map do |current_client|
98
99
  indices = Array(index_name || write_indices(current_client))
99
100
 
100
- commands = indices.flat_map { |index| yield(index) }
101
+ commands = indices.flat_map(&block)
101
102
 
102
103
  current_client.bulk(body: commands, refresh: refresh).tap do |result|
103
104
  check_errors!(result)
@@ -109,11 +110,10 @@ module Zelastic
109
110
  return false unless result['errors']
110
111
 
111
112
  errors = result['items']
112
- .map { |item| item['error'] || item.fetch('index', {})['error'] }
113
- .compact
113
+ .filter_map { |item| item['error'] || item.fetch('index', {})['error'] }
114
114
 
115
115
  ignorable_errors, important_errors = errors
116
- .partition { |error| ignorable_error?(error) }
116
+ .partition { |error| ignorable_error?(error) }
117
117
 
118
118
  logger.warn("Ignoring #{ignorable_errors.count} version conflicts") if ignorable_errors.any?
119
119
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Zelastic
4
- VERSION = '0.6.2'
4
+ VERSION = '0.7.0'
5
5
  end
data/zelastic.gemspec CHANGED
@@ -25,10 +25,10 @@ Gem::Specification.new do |spec|
25
25
  spec.add_dependency 'activesupport'
26
26
 
27
27
  spec.add_development_dependency 'activerecord'
28
- spec.add_development_dependency 'bundler'
29
- spec.add_development_dependency 'carwow_rubocop'
30
- spec.add_development_dependency 'elasticsearch'
31
- spec.add_development_dependency 'pry'
32
- spec.add_development_dependency 'rake'
33
- spec.add_development_dependency 'rspec'
28
+ spec.add_development_dependency 'bundler', '~> 2'
29
+ spec.add_development_dependency 'carwow_rubocop', '~> 4'
30
+ spec.add_development_dependency 'elasticsearch', '>= 5', '< 8'
31
+ spec.add_development_dependency 'pry', '~> 0.14'
32
+ spec.add_development_dependency 'rake', '~> 13'
33
+ spec.add_development_dependency 'rspec', '~> 3'
34
34
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zelastic
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.2
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - carwow Developers
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-03-25 00:00:00.000000000 Z
11
+ date: 2022-08-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -42,86 +42,92 @@ dependencies:
42
42
  name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">="
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '0'
47
+ version: '2'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ">="
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '0'
54
+ version: '2'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: carwow_rubocop
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ">="
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '0'
61
+ version: '4'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ">="
66
+ - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '0'
68
+ version: '4'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: elasticsearch
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - ">="
74
74
  - !ruby/object:Gem::Version
75
- version: '0'
75
+ version: '5'
76
+ - - "<"
77
+ - !ruby/object:Gem::Version
78
+ version: '8'
76
79
  type: :development
77
80
  prerelease: false
78
81
  version_requirements: !ruby/object:Gem::Requirement
79
82
  requirements:
80
83
  - - ">="
81
84
  - !ruby/object:Gem::Version
82
- version: '0'
85
+ version: '5'
86
+ - - "<"
87
+ - !ruby/object:Gem::Version
88
+ version: '8'
83
89
  - !ruby/object:Gem::Dependency
84
90
  name: pry
85
91
  requirement: !ruby/object:Gem::Requirement
86
92
  requirements:
87
- - - ">="
93
+ - - "~>"
88
94
  - !ruby/object:Gem::Version
89
- version: '0'
95
+ version: '0.14'
90
96
  type: :development
91
97
  prerelease: false
92
98
  version_requirements: !ruby/object:Gem::Requirement
93
99
  requirements:
94
- - - ">="
100
+ - - "~>"
95
101
  - !ruby/object:Gem::Version
96
- version: '0'
102
+ version: '0.14'
97
103
  - !ruby/object:Gem::Dependency
98
104
  name: rake
99
105
  requirement: !ruby/object:Gem::Requirement
100
106
  requirements:
101
- - - ">="
107
+ - - "~>"
102
108
  - !ruby/object:Gem::Version
103
- version: '0'
109
+ version: '13'
104
110
  type: :development
105
111
  prerelease: false
106
112
  version_requirements: !ruby/object:Gem::Requirement
107
113
  requirements:
108
- - - ">="
114
+ - - "~>"
109
115
  - !ruby/object:Gem::Version
110
- version: '0'
116
+ version: '13'
111
117
  - !ruby/object:Gem::Dependency
112
118
  name: rspec
113
119
  requirement: !ruby/object:Gem::Requirement
114
120
  requirements:
115
- - - ">="
121
+ - - "~>"
116
122
  - !ruby/object:Gem::Version
117
- version: '0'
123
+ version: '3'
118
124
  type: :development
119
125
  prerelease: false
120
126
  version_requirements: !ruby/object:Gem::Requirement
121
127
  requirements:
122
- - - ">="
128
+ - - "~>"
123
129
  - !ruby/object:Gem::Version
124
- version: '0'
130
+ version: '3'
125
131
  description: An index manager for Elasticsearch and ActiveRecord
126
132
  email:
127
133
  - developers@carwow.co.uk
@@ -134,14 +140,14 @@ files:
134
140
  - ".gitignore"
135
141
  - ".rspec"
136
142
  - ".rubocop.yml"
137
- - ".rubocop_todo.yml"
138
143
  - CHANGELOG.md
139
144
  - Gemfile
140
- - Gemfile.lock
141
145
  - LICENSE.txt
142
146
  - README.md
143
147
  - Rakefile
144
148
  - bin/console
149
+ - bin/rspec
150
+ - bin/rubocop
145
151
  - bin/setup
146
152
  - lib/zelastic.rb
147
153
  - lib/zelastic/config.rb
@@ -168,7 +174,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
168
174
  - !ruby/object:Gem::Version
169
175
  version: '0'
170
176
  requirements: []
171
- rubygems_version: 3.1.4
177
+ rubygems_version: 3.3.11
172
178
  signing_key:
173
179
  specification_version: 4
174
180
  summary: Zero-downtime (re-)indexing of ActiveRecord models into Elasticsearch.
data/.rubocop_todo.yml DELETED
@@ -1,32 +0,0 @@
1
- # This configuration was generated by
2
- # `rubocop --auto-gen-config`
3
- # on 2018-05-27 17:11:31 +0100 using RuboCop version 0.52.1.
4
- # The point is for the user to remove these configuration records
5
- # one by one as the offenses are removed from the code base.
6
- # Note that changes in the inspected code, or installation of new
7
- # versions of RuboCop, may require this file to be generated again.
8
-
9
- # Offense count: 1
10
- Lint/ShadowingOuterLocalVariable:
11
- Exclude:
12
- - 'lib/zelastic/indexer.rb'
13
-
14
- # Offense count: 1
15
- Metrics/AbcSize:
16
- Max: 17
17
-
18
- # Offense count: 1
19
- # Configuration parameters: CountComments, ExcludedMethods.
20
- Metrics/BlockLength:
21
- Max: 83
22
-
23
- # Offense count: 4
24
- # Configuration parameters: AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, IgnoredPatterns.
25
- # URISchemes: http, https
26
- Metrics/LineLength:
27
- Max: 146
28
-
29
- # Offense count: 1
30
- Naming/AccessorMethodName:
31
- Exclude:
32
- - 'spec/zelastic/indexer_spec.rb'
data/Gemfile.lock DELETED
@@ -1,107 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- zelastic (0.6.2)
5
- activesupport
6
-
7
- GEM
8
- remote: https://rubygems.org/
9
- specs:
10
- activemodel (6.1.3)
11
- activesupport (= 6.1.3)
12
- activerecord (6.1.3)
13
- activemodel (= 6.1.3)
14
- activesupport (= 6.1.3)
15
- activesupport (6.1.3)
16
- concurrent-ruby (~> 1.0, >= 1.0.2)
17
- i18n (>= 1.6, < 2)
18
- minitest (>= 5.1)
19
- tzinfo (~> 2.0)
20
- zeitwerk (~> 2.3)
21
- ast (2.4.1)
22
- carwow_rubocop (3.3.0)
23
- rubocop (>= 0.78)
24
- rubocop-performance
25
- rubocop-rspec
26
- coderay (1.1.3)
27
- concurrent-ruby (1.1.8)
28
- diff-lcs (1.4.4)
29
- elasticsearch (7.11.2)
30
- elasticsearch-api (= 7.11.2)
31
- elasticsearch-transport (= 7.11.2)
32
- elasticsearch-api (7.11.2)
33
- multi_json
34
- elasticsearch-transport (7.11.2)
35
- faraday (~> 1)
36
- multi_json
37
- faraday (1.3.0)
38
- faraday-net_http (~> 1.0)
39
- multipart-post (>= 1.2, < 3)
40
- ruby2_keywords
41
- faraday-net_http (1.0.1)
42
- i18n (1.8.9)
43
- concurrent-ruby (~> 1.0)
44
- method_source (1.0.0)
45
- minitest (5.14.3)
46
- multi_json (1.15.0)
47
- multipart-post (2.1.1)
48
- parallel (1.19.1)
49
- parser (2.7.1.3)
50
- ast (~> 2.4.0)
51
- pry (0.14.0)
52
- coderay (~> 1.1)
53
- method_source (~> 1.0)
54
- rainbow (3.0.0)
55
- rake (13.0.3)
56
- regexp_parser (1.7.1)
57
- rexml (3.2.4)
58
- rspec (3.10.0)
59
- rspec-core (~> 3.10.0)
60
- rspec-expectations (~> 3.10.0)
61
- rspec-mocks (~> 3.10.0)
62
- rspec-core (3.10.0)
63
- rspec-support (~> 3.10.0)
64
- rspec-expectations (3.10.0)
65
- diff-lcs (>= 1.2.0, < 2.0)
66
- rspec-support (~> 3.10.0)
67
- rspec-mocks (3.10.0)
68
- diff-lcs (>= 1.2.0, < 2.0)
69
- rspec-support (~> 3.10.0)
70
- rspec-support (3.10.0)
71
- rubocop (0.85.1)
72
- parallel (~> 1.10)
73
- parser (>= 2.7.0.1)
74
- rainbow (>= 2.2.2, < 4.0)
75
- regexp_parser (>= 1.7)
76
- rexml
77
- rubocop-ast (>= 0.0.3)
78
- ruby-progressbar (~> 1.7)
79
- unicode-display_width (>= 1.4.0, < 2.0)
80
- rubocop-ast (0.0.3)
81
- parser (>= 2.7.0.1)
82
- rubocop-performance (1.6.1)
83
- rubocop (>= 0.71.0)
84
- rubocop-rspec (1.40.0)
85
- rubocop (>= 0.68.1)
86
- ruby-progressbar (1.10.1)
87
- ruby2_keywords (0.0.4)
88
- tzinfo (2.0.4)
89
- concurrent-ruby (~> 1.0)
90
- unicode-display_width (1.7.0)
91
- zeitwerk (2.4.2)
92
-
93
- PLATFORMS
94
- ruby
95
-
96
- DEPENDENCIES
97
- activerecord
98
- bundler
99
- carwow_rubocop
100
- elasticsearch
101
- pry
102
- rake
103
- rspec
104
- zelastic!
105
-
106
- BUNDLED WITH
107
- 2.1.4