zelastic 0.6.2 → 0.7.0

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: 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