algoliasearch-rails 1.25.0 → 2.0.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: 71ddc460401250164dd2422b959edbb444a99bec59ba34fc26facf7b2783b141
4
- data.tar.gz: 4500a5845bafdbc8794d1538056f1c59a7ced17cd49e7c80fa827507d155c532
3
+ metadata.gz: d738368dd1684b9fa58b5507e65d0d7522930a6894e0e9684139fbd5def1a583
4
+ data.tar.gz: 8fdd59e52471fd184cf51092706fb345d699cd9d135385bd0a7ade084ec8dc2d
5
5
  SHA512:
6
- metadata.gz: 7e7512b284a7f61ff4a04f12e7979d632b04a208781b28f2b3690edc75da5b099c83a77205ca0f9ac7298a20e3b7674260b5d2fd1c9471498df95d1ac82be858
7
- data.tar.gz: 51a2e7381403a45f0bdd2f587bdeffe30d375853eeae767a07385ca4ae0bab0c612f1d7b79b143460f5982be9d05bea85c636740b4f2141291155cc241a117bf
6
+ metadata.gz: a9f4a61d1eafcda6ffbca4c585026ca54d9aed7fb3b03b36143c19b5ee504196b10e2a8be88b7083004fb0b070dfd12bb0dbfecaa987c1761c8afca31326eeea
7
+ data.tar.gz: 6a8fb2b05c4798965164fc2f651624b2a69935dfa3a22d7704bb312424b7e0f796e7c3d5e9bbdc6d9058f17fe06cc0ec40bd41ee06233f11ce98435906f2a235
data/CHANGELOG.MD CHANGED
@@ -1,6 +1,13 @@
1
1
  # CHANGELOG
2
2
 
3
- ## [Unreleased](https://github.com/algolia/algoliasearch-rails/compare/1.25.0...master)
3
+ ## [Unreleased](https://github.com/algolia/algoliasearch-rails/compare/2.0.0...master)
4
+
5
+ ## [2.0.0](https://github.com/algolia/algoliasearch-rails/compare/2.0.0...1.25.0)
6
+
7
+ ### Breaking changes
8
+ - Adds support for `algolia` gem.
9
+ - Drops support for Ruby < 2.4
10
+ - Drops support for Rails < 5.1
4
11
 
5
12
  ## [1.25.0](https://github.com/algolia/algoliasearch-rails/compare/1.24.1...1.25.0) (2020-11-24)
6
13
 
data/Gemfile CHANGED
@@ -1,41 +1,22 @@
1
1
  source "http://rubygems.org"
2
2
 
3
- gem 'json', '~> 1.8', '>= 1.8.6'
4
- gem 'algoliasearch', '>= 1.26.0', '< 2.0.0'
3
+ gem 'json', '>= 1.5.1'
4
+ gem 'algolia', '< 3.0.0'
5
5
 
6
6
  if defined?(RUBY_ENGINE) && RUBY_ENGINE == 'rbx'
7
7
  gem 'rubysl', '~> 2.0', :platform => :rbx
8
8
  end
9
9
 
10
10
  group :test do
11
- rails_version = ENV["RAILS_VERSION"] ? "~> #{ENV["RAILS_VERSION"]}" : '>= 3.2.0'
12
- gem 'rails', rails_version
11
+ rails_version = ENV["RAILS_VERSION"] || '6.1'
12
+ gem 'rails', "~> #{rails_version}"
13
13
  gem 'active_model_serializers'
14
- if defined?(RUBY_VERSION) && RUBY_VERSION == "1.8.7"
15
- gem 'i18n', '< 0.7'
16
- gem 'highline', '< 1.7'
17
- gem 'addressable', '<= 2.2.7'
18
- gem 'rack-cache', '< 1.3'
19
- gem 'mime-types', '< 2.6'
20
- gem 'net-http-persistent', '< 3.0'
21
- gem 'faraday', '< 0.10'
22
- elsif defined?(RUBY_VERSION) && RUBY_VERSION == "1.9.3"
23
- gem 'rack', '< 2'
24
- gem 'rack-cache', '<= 1.7.1'
25
- if Gem::Version.new(ENV['RAILS_VERSION'] || '3.2.0') >= Gem::Version.new('4.0')
26
- gem 'mime-types', '~> 2.6'
27
- else
28
- gem 'mime-types', '< 3'
29
- end
30
- end
31
- if defined?(RUBY_VERSION) &&
32
- defined?(RUBY_ENGINE) &&
33
- RUBY_ENGINE == 'ruby' &&
34
- Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.1')
35
- gem 'net-http-persistent', '< 3.0'
14
+ if Gem::Version.new(rails_version) >= Gem::Version.new('6.0')
15
+ gem 'sqlite3', '~> 1.4.0', :platform => [:rbx, :ruby]
16
+ else
17
+ gem 'sqlite3', '< 1.4.0', :platform => [:rbx, :ruby]
36
18
  end
37
19
  gem 'rspec', '>= 2.5.0', '< 3.0'
38
- gem 'sqlite3', '< 1.4.0', :platform => [:rbx, :ruby]
39
20
  gem 'jdbc-sqlite3', :platform => :jruby
40
21
  gem 'activerecord-jdbc-adapter', :platform => :jruby
41
22
  gem 'activerecord-jdbcsqlite3-adapter', :platform => :jruby
@@ -53,13 +34,6 @@ end
53
34
 
54
35
  group :test, :development do
55
36
  gem 'will_paginate', '>= 2.3.15'
56
- if defined?(RUBY_VERSION) &&
57
- defined?(RUBY_ENGINE) &&
58
- RUBY_ENGINE == 'ruby' &&
59
- Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2')
60
- gem 'kaminari', '< 1'
61
- else
62
- gem 'kaminari'
63
- end
37
+ gem 'kaminari', '< 1'
64
38
  end
65
39
 
data/Gemfile.lock CHANGED
@@ -1,153 +1,160 @@
1
1
  GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
- actioncable (5.2.4.4)
5
- actionpack (= 5.2.4.4)
4
+ actioncable (6.1.3.1)
5
+ actionpack (= 6.1.3.1)
6
+ activesupport (= 6.1.3.1)
6
7
  nio4r (~> 2.0)
7
8
  websocket-driver (>= 0.6.1)
8
- actionmailer (5.2.4.4)
9
- actionpack (= 5.2.4.4)
10
- actionview (= 5.2.4.4)
11
- activejob (= 5.2.4.4)
9
+ actionmailbox (6.1.3.1)
10
+ actionpack (= 6.1.3.1)
11
+ activejob (= 6.1.3.1)
12
+ activerecord (= 6.1.3.1)
13
+ activestorage (= 6.1.3.1)
14
+ activesupport (= 6.1.3.1)
15
+ mail (>= 2.7.1)
16
+ actionmailer (6.1.3.1)
17
+ actionpack (= 6.1.3.1)
18
+ actionview (= 6.1.3.1)
19
+ activejob (= 6.1.3.1)
20
+ activesupport (= 6.1.3.1)
12
21
  mail (~> 2.5, >= 2.5.4)
13
22
  rails-dom-testing (~> 2.0)
14
- actionpack (5.2.4.4)
15
- actionview (= 5.2.4.4)
16
- activesupport (= 5.2.4.4)
17
- rack (~> 2.0, >= 2.0.8)
23
+ actionpack (6.1.3.1)
24
+ actionview (= 6.1.3.1)
25
+ activesupport (= 6.1.3.1)
26
+ rack (~> 2.0, >= 2.0.9)
18
27
  rack-test (>= 0.6.3)
19
28
  rails-dom-testing (~> 2.0)
20
- rails-html-sanitizer (~> 1.0, >= 1.0.2)
21
- actionview (5.2.4.4)
22
- activesupport (= 5.2.4.4)
29
+ rails-html-sanitizer (~> 1.0, >= 1.2.0)
30
+ actiontext (6.1.3.1)
31
+ actionpack (= 6.1.3.1)
32
+ activerecord (= 6.1.3.1)
33
+ activestorage (= 6.1.3.1)
34
+ activesupport (= 6.1.3.1)
35
+ nokogiri (>= 1.8.5)
36
+ actionview (6.1.3.1)
37
+ activesupport (= 6.1.3.1)
23
38
  builder (~> 3.1)
24
39
  erubi (~> 1.4)
25
40
  rails-dom-testing (~> 2.0)
26
- rails-html-sanitizer (~> 1.0, >= 1.0.3)
27
- active_model_serializers (0.10.10)
28
- actionpack (>= 4.1, < 6.1)
29
- activemodel (>= 4.1, < 6.1)
41
+ rails-html-sanitizer (~> 1.1, >= 1.2.0)
42
+ active_model_serializers (0.10.12)
43
+ actionpack (>= 4.1, < 6.2)
44
+ activemodel (>= 4.1, < 6.2)
30
45
  case_transform (>= 0.2)
31
46
  jsonapi-renderer (>= 0.1.1.beta1, < 0.3)
32
- activejob (5.2.4.4)
33
- activesupport (= 5.2.4.4)
47
+ activejob (6.1.3.1)
48
+ activesupport (= 6.1.3.1)
34
49
  globalid (>= 0.3.6)
35
- activemodel (5.2.4.4)
36
- activesupport (= 5.2.4.4)
37
- activerecord (5.2.4.4)
38
- activemodel (= 5.2.4.4)
39
- activesupport (= 5.2.4.4)
40
- arel (>= 9.0)
41
- activestorage (5.2.4.4)
42
- actionpack (= 5.2.4.4)
43
- activerecord (= 5.2.4.4)
44
- marcel (~> 0.3.1)
45
- activesupport (5.2.4.4)
50
+ activemodel (6.1.3.1)
51
+ activesupport (= 6.1.3.1)
52
+ activerecord (6.1.3.1)
53
+ activemodel (= 6.1.3.1)
54
+ activesupport (= 6.1.3.1)
55
+ activestorage (6.1.3.1)
56
+ actionpack (= 6.1.3.1)
57
+ activejob (= 6.1.3.1)
58
+ activerecord (= 6.1.3.1)
59
+ activesupport (= 6.1.3.1)
60
+ marcel (~> 1.0.0)
61
+ mini_mime (~> 1.0.2)
62
+ activesupport (6.1.3.1)
46
63
  concurrent-ruby (~> 1.0, >= 1.0.2)
47
- i18n (>= 0.7, < 2)
48
- minitest (~> 5.1)
49
- tzinfo (~> 1.1)
50
- addressable (2.7.0)
51
- public_suffix (>= 2.0.2, < 5.0)
52
- algoliasearch (1.27.5)
53
- httpclient (~> 2.8, >= 2.8.3)
54
- json (>= 1.5.1)
55
- arel (9.0.0)
64
+ i18n (>= 1.6, < 2)
65
+ minitest (>= 5.1)
66
+ tzinfo (~> 2.0)
67
+ zeitwerk (~> 2.3)
68
+ addressable (2.4.0)
69
+ algolia (2.0.4)
70
+ faraday (>= 0.15, < 2.0)
71
+ multi_json (~> 1.0)
72
+ net-http-persistent
73
+ backports (3.21.0)
56
74
  builder (3.2.4)
57
75
  case_transform (0.2)
58
76
  activesupport
59
- concurrent-ruby (1.1.7)
77
+ concurrent-ruby (1.1.8)
60
78
  crass (1.0.6)
61
79
  diff-lcs (1.4.4)
62
- erubi (1.9.0)
63
- faraday (1.1.0)
80
+ erubi (1.10.0)
81
+ ethon (0.13.0)
82
+ ffi (>= 1.15.0)
83
+ faraday (0.17.4)
64
84
  multipart-post (>= 1.2, < 3)
65
- ruby2_keywords
66
- faraday_middleware (1.0.0)
67
- faraday (~> 1.0)
68
- gh (0.18.0)
69
- activesupport (~> 5.0)
70
- addressable (~> 2.4)
71
- faraday (~> 1.0)
72
- faraday_middleware (~> 1.0)
85
+ faraday_middleware (0.14.0)
86
+ faraday (>= 0.7.4, < 1.0)
87
+ ffi (1.15.0)
88
+ gh (0.15.1)
89
+ addressable (~> 2.4.0)
90
+ backports
91
+ faraday (~> 0.8)
73
92
  multi_json (~> 1.0)
74
93
  net-http-persistent (~> 2.9)
75
94
  net-http-pipeline
76
95
  globalid (0.4.2)
77
96
  activesupport (>= 4.2.0)
78
- highline (2.0.3)
79
- httpclient (2.8.3)
80
- i18n (1.8.5)
97
+ highline (1.7.10)
98
+ i18n (1.8.10)
81
99
  concurrent-ruby (~> 1.0)
82
- json (1.8.6)
83
- json_pure (2.3.1)
100
+ json (2.5.1)
84
101
  jsonapi-renderer (0.2.2)
85
- kaminari (1.2.1)
86
- activesupport (>= 4.1.0)
87
- kaminari-actionview (= 1.2.1)
88
- kaminari-activerecord (= 1.2.1)
89
- kaminari-core (= 1.2.1)
90
- kaminari-actionview (1.2.1)
91
- actionview
92
- kaminari-core (= 1.2.1)
93
- kaminari-activerecord (1.2.1)
94
- activerecord
95
- kaminari-core (= 1.2.1)
96
- kaminari-core (1.2.1)
102
+ kaminari (0.17.0)
103
+ actionpack (>= 3.0.0)
104
+ activesupport (>= 3.0.0)
97
105
  launchy (2.4.3)
98
106
  addressable (~> 2.3)
99
- loofah (2.7.0)
107
+ loofah (2.9.1)
100
108
  crass (~> 1.0.2)
101
109
  nokogiri (>= 1.5.9)
102
110
  mail (2.7.1)
103
111
  mini_mime (>= 0.1.1)
104
- marcel (0.3.3)
105
- mimemagic (~> 0.3.2)
112
+ marcel (1.0.1)
106
113
  method_source (1.0.0)
107
- mimemagic (0.3.5)
108
- mini_mime (1.0.2)
109
- mini_portile2 (2.4.0)
110
- minitest (5.14.2)
114
+ mini_mime (1.0.3)
115
+ minitest (5.14.4)
111
116
  multi_json (1.15.0)
112
117
  multipart-post (2.1.1)
113
118
  net-http-persistent (2.9.4)
114
119
  net-http-pipeline (1.0.1)
115
- nio4r (2.5.4)
116
- nokogiri (1.10.10)
117
- mini_portile2 (~> 2.4.0)
118
- public_suffix (4.0.6)
120
+ nio4r (2.5.7)
121
+ nokogiri (1.11.3-x86_64-darwin)
122
+ racc (~> 1.4)
119
123
  pusher-client (0.6.2)
120
124
  json
121
125
  websocket (~> 1.0)
126
+ racc (1.5.2)
122
127
  rack (2.2.3)
123
128
  rack-test (1.1.0)
124
129
  rack (>= 1.0, < 3)
125
- rails (5.2.4.4)
126
- actioncable (= 5.2.4.4)
127
- actionmailer (= 5.2.4.4)
128
- actionpack (= 5.2.4.4)
129
- actionview (= 5.2.4.4)
130
- activejob (= 5.2.4.4)
131
- activemodel (= 5.2.4.4)
132
- activerecord (= 5.2.4.4)
133
- activestorage (= 5.2.4.4)
134
- activesupport (= 5.2.4.4)
135
- bundler (>= 1.3.0)
136
- railties (= 5.2.4.4)
130
+ rails (6.1.3.1)
131
+ actioncable (= 6.1.3.1)
132
+ actionmailbox (= 6.1.3.1)
133
+ actionmailer (= 6.1.3.1)
134
+ actionpack (= 6.1.3.1)
135
+ actiontext (= 6.1.3.1)
136
+ actionview (= 6.1.3.1)
137
+ activejob (= 6.1.3.1)
138
+ activemodel (= 6.1.3.1)
139
+ activerecord (= 6.1.3.1)
140
+ activestorage (= 6.1.3.1)
141
+ activesupport (= 6.1.3.1)
142
+ bundler (>= 1.15.0)
143
+ railties (= 6.1.3.1)
137
144
  sprockets-rails (>= 2.0.0)
138
145
  rails-dom-testing (2.0.3)
139
146
  activesupport (>= 4.2.0)
140
147
  nokogiri (>= 1.6)
141
148
  rails-html-sanitizer (1.3.0)
142
149
  loofah (~> 2.3)
143
- railties (5.2.4.4)
144
- actionpack (= 5.2.4.4)
145
- activesupport (= 5.2.4.4)
150
+ railties (6.1.3.1)
151
+ actionpack (= 6.1.3.1)
152
+ activesupport (= 6.1.3.1)
146
153
  method_source
147
154
  rake (>= 0.8.7)
148
- thor (>= 0.19.0, < 2.0)
155
+ thor (~> 1.0)
149
156
  rake (10.1.1)
150
- rdoc (6.2.1)
157
+ rdoc (6.3.0)
151
158
  redgreen (1.2.2)
152
159
  rspec (2.99.0)
153
160
  rspec-core (~> 2.99.0)
@@ -157,8 +164,7 @@ GEM
157
164
  rspec-expectations (2.99.2)
158
165
  diff-lcs (>= 1.1.3, < 2.0)
159
166
  rspec-mocks (2.99.4)
160
- ruby2_keywords (0.0.2)
161
- sequel (5.38.0)
167
+ sequel (5.43.0)
162
168
  sprockets (4.0.2)
163
169
  concurrent-ruby (~> 1.0)
164
170
  rack (> 1, < 3)
@@ -166,45 +172,48 @@ GEM
166
172
  actionpack (>= 4.0)
167
173
  activesupport (>= 4.0)
168
174
  sprockets (>= 3.0.0)
169
- sqlite3 (1.3.13)
170
- thor (1.0.1)
171
- thread_safe (0.3.6)
172
- travis (1.10.0)
173
- faraday (~> 1.0)
174
- faraday_middleware (~> 1.0)
175
+ sqlite3 (1.4.2)
176
+ thor (1.1.0)
177
+ travis (1.8.13)
178
+ backports
179
+ faraday (~> 0.9)
180
+ faraday_middleware (~> 0.9, >= 0.9.1)
175
181
  gh (~> 0.13)
176
- highline (~> 2.0)
177
- json_pure (~> 2.3)
178
- launchy (~> 2.1, < 2.5.0)
182
+ highline (~> 1.6)
183
+ launchy (~> 2.1)
179
184
  pusher-client (~> 0.4)
180
- tzinfo (1.2.7)
181
- thread_safe (~> 0.1)
182
- websocket (1.2.8)
185
+ typhoeus (~> 0.6, >= 0.6.8)
186
+ typhoeus (0.8.0)
187
+ ethon (>= 0.8.0)
188
+ tzinfo (2.0.4)
189
+ concurrent-ruby (~> 1.0)
190
+ websocket (1.2.9)
183
191
  websocket-driver (0.7.3)
184
192
  websocket-extensions (>= 0.1.0)
185
193
  websocket-extensions (0.1.5)
186
194
  will_paginate (3.3.0)
195
+ zeitwerk (2.4.2)
187
196
 
188
197
  PLATFORMS
189
- ruby
198
+ x86_64-darwin-19
190
199
 
191
200
  DEPENDENCIES
192
201
  active_model_serializers
193
202
  activerecord-jdbc-adapter
194
203
  activerecord-jdbcsqlite3-adapter
195
- algoliasearch (>= 1.26.0, < 2.0.0)
204
+ algolia (< 3.0.0)
196
205
  jdbc-sqlite3
197
- json (~> 1.8, >= 1.8.6)
198
- kaminari
199
- rails (>= 3.2.0)
206
+ json (>= 1.5.1)
207
+ kaminari (< 1)
208
+ rails (~> 6.1)
200
209
  rake (~> 10.1.0)
201
210
  rdoc
202
211
  redgreen
203
212
  rspec (>= 2.5.0, < 3.0)
204
213
  sequel (>= 4.0)
205
- sqlite3 (< 1.4.0)
214
+ sqlite3 (~> 1.4.0)
206
215
  travis
207
216
  will_paginate (>= 2.3.15)
208
217
 
209
218
  BUNDLED WITH
210
- 2.1.4
219
+ 2.2.15
data/README.md CHANGED
@@ -6,7 +6,7 @@
6
6
  <h4 align="center">The perfect starting point to integrate <a href="https://algolia.com" target="_blank">Algolia</a> within your Rails project</h4>
7
7
 
8
8
  <p align="center">
9
- <a href="https://travis-ci.org/algolia/algoliasearch-rails"><img src="https://img.shields.io/travis/algolia/algoliasearch-rails/master.svg" alt="Build Status"></img></a>
9
+ <a href="https://circleci.com/gh/algolia/algoliasearch-rails"><img src="https://circleci.com/gh/algolia/algoliasearch-rails.svg?style=shield" alt="CircleCI" /></a>
10
10
  <a href="http://badge.fury.io/rb/algoliasearch-rails"><img src="https://badge.fury.io/rb/algoliasearch-rails.svg" alt="Gem Version"></img></a>
11
11
  <a href="https://codeclimate.com/github/algolia/algoliasearch-rails"><img src="https://codeclimate.com/github/algolia/algoliasearch-rails.svg" alt="Code Climate"></img></a>
12
12
  <img src="https://img.shields.io/badge/ActiveRecord-yes-blue.svg?style=flat-square" alt="ActiveRecord"></img>
@@ -79,7 +79,7 @@ Gem::Specification.new do |s|
79
79
 
80
80
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
81
81
  s.add_runtime_dependency(%q<json>, [">= 1.5.1"])
82
- s.add_runtime_dependency(%q<algoliasearch>, [">= 1.26.0", "< 2.0.0"])
82
+ s.add_runtime_dependency(%q<algolia>, ["< 3.0.0"])
83
83
  s.add_development_dependency(%q<will_paginate>, [">= 2.3.15"])
84
84
  s.add_development_dependency(%q<kaminari>, [">= 0"])
85
85
  s.add_development_dependency "travis"
@@ -87,11 +87,11 @@ Gem::Specification.new do |s|
87
87
  s.add_development_dependency "rdoc"
88
88
  else
89
89
  s.add_dependency(%q<json>, [">= 1.5.1"])
90
- s.add_dependency(%q<algoliasearch>, [">= 1.26.0", "< 2.0.0"])
90
+ s.add_dependency(%q<algolia>, ["< 3.0.0"])
91
91
  end
92
92
  else
93
93
  s.add_dependency(%q<json>, [">= 1.5.1"])
94
- s.add_dependency(%q<algoliasearch>, [">= 1.26.0", "< 2.0.0"])
94
+ s.add_dependency(%q<algolia>, ["< 3.0.0"])
95
95
  end
96
96
  end
97
97
 
@@ -1,4 +1,4 @@
1
- require 'algoliasearch'
1
+ require 'algolia'
2
2
 
3
3
  require 'algoliasearch/version'
4
4
  require 'algoliasearch/utilities'
@@ -53,7 +53,6 @@ module AlgoliaSearch
53
53
  OPTIONS = [
54
54
  # Attributes
55
55
  :searchableAttributes, :attributesForFaceting, :unretrievableAttributes, :attributesToRetrieve,
56
- :attributesToIndex, #Legacy name of searchableAttributes
57
56
  # Ranking
58
57
  :ranking, :customRanking, # Replicas are handled via `add_replica`
59
58
  # Faceting
@@ -76,7 +75,6 @@ module AlgoliaSearch
76
75
  :disablePrefixOnAttributes, :disableExactOnAttributes, :exactOnSingleWordQuery, :alternativesAsExact,
77
76
  # Performance
78
77
  :numericAttributesForFiltering, :allowCompressionOfIntegerArray,
79
- :numericAttributesToIndex, # Legacy name of numericAttributesForFiltering
80
78
  # Advanced
81
79
  :attributeForDistinct, :distinct, :replaceSynonymsInHighlight, :minProximity, :responseFields,
82
80
  :maxFacetHits,
@@ -102,7 +100,7 @@ module AlgoliaSearch
102
100
 
103
101
  def attribute(*names, &block)
104
102
  raise ArgumentError.new('Cannot pass multiple attribute names if block given') if block_given? and names.length > 1
105
- raise ArgumentError.new('Cannot specify additional attributes on a replica index') if @options[:slave] || @options[:replica]
103
+ raise ArgumentError.new('Cannot specify additional attributes on a replica index') if @options[:replica]
106
104
  @attributes ||= {}
107
105
  names.flatten.each do |name|
108
106
  @attributes[name.to_s] = block_given? ? Proc.new { |o| o.instance_eval(&block) } : Proc.new { |o| o.send(name) }
@@ -112,7 +110,7 @@ module AlgoliaSearch
112
110
 
113
111
  def add_attribute(*names, &block)
114
112
  raise ArgumentError.new('Cannot pass multiple attribute names if block given') if block_given? and names.length > 1
115
- raise ArgumentError.new('Cannot specify additional attributes on a replica index') if @options[:slave] || @options[:replica]
113
+ raise ArgumentError.new('Cannot specify additional attributes on a replica index') if @options[:replica]
116
114
  @additional_attributes ||= {}
117
115
  names.each do |name|
118
116
  @additional_attributes[name.to_s] = block_given? ? Proc.new { |o| o.instance_eval(&block) } : Proc.new { |o| o.send(name) }
@@ -224,14 +222,14 @@ module AlgoliaSearch
224
222
  end
225
223
 
226
224
  def geoloc(lat_attr = nil, lng_attr = nil, &block)
227
- raise ArgumentError.new('Cannot specify additional attributes on a replica index') if @options[:slave] || @options[:replica]
225
+ raise ArgumentError.new('Cannot specify additional attributes on a replica index') if @options[:replica]
228
226
  add_attribute :_geoloc do |o|
229
227
  block_given? ? o.instance_eval(&block) : { :lat => o.send(lat_attr).to_f, :lng => o.send(lng_attr).to_f }
230
228
  end
231
229
  end
232
230
 
233
231
  def tags(*args, &block)
234
- raise ArgumentError.new('Cannot specify additional attributes on a replica index') if @options[:slave] || @options[:replica]
232
+ raise ArgumentError.new('Cannot specify additional attributes on a replica index') if @options[:replica]
235
233
  add_attribute :_tags do |o|
236
234
  v = block_given? ? o.instance_eval(&block) : args
237
235
  v.is_a?(Array) ? v : [v]
@@ -248,13 +246,7 @@ module AlgoliaSearch
248
246
  v = get_setting(k)
249
247
  settings[k] = v if !v.nil?
250
248
  end
251
- if !@options[:slave] && !@options[:replica]
252
- settings[:slaves] = additional_indexes.select { |opts, s| opts[:slave] }.map do |opts, s|
253
- name = opts[:index_name]
254
- name = "#{name}_#{Rails.env.to_s}" if opts[:per_environment]
255
- name
256
- end
257
- settings.delete(:slaves) if settings[:slaves].empty?
249
+ if !@options[:replica]
258
250
  settings[:replicas] = additional_indexes.select { |opts, s| opts[:replica] }.map do |opts, s|
259
251
  name = opts[:index_name]
260
252
  name = "#{name}_#{Rails.env.to_s}" if opts[:per_environment]
@@ -266,27 +258,20 @@ module AlgoliaSearch
266
258
  end
267
259
 
268
260
  def add_index(index_name, options = {}, &block)
269
- raise ArgumentError.new('Cannot specify additional index on a replica index') if @options[:slave] || @options[:replica]
261
+ raise ArgumentError.new('Cannot specify additional index on a replica index') if @options[:replica]
270
262
  raise ArgumentError.new('No block given') if !block_given?
271
263
  raise ArgumentError.new('Options auto_index and auto_remove cannot be set on nested indexes') if options[:auto_index] || options[:auto_remove]
272
264
  @additional_indexes ||= {}
273
- raise MixedSlavesAndReplicas.new('Cannot mix slaves and replicas in the same configuration (add_slave is deprecated)') if (options[:slave] && @additional_indexes.any? { |opts, _| opts[:replica] }) || (options[:replica] && @additional_indexes.any? { |opts, _| opts[:slave] })
274
265
  options[:index_name] = index_name
275
266
  @additional_indexes[options] = IndexSettings.new(options, &block)
276
267
  end
277
268
 
278
269
  def add_replica(index_name, options = {}, &block)
279
- raise ArgumentError.new('Cannot specify additional replicas on a replica index') if @options[:slave] || @options[:replica]
270
+ raise ArgumentError.new('Cannot specify additional replicas on a replica index') if @options[:replica]
280
271
  raise ArgumentError.new('No block given') if !block_given?
281
272
  add_index(index_name, options.merge({ :replica => true, :primary_settings => self }), &block)
282
273
  end
283
274
 
284
- def add_slave(index_name, options = {}, &block)
285
- raise ArgumentError.new('Cannot specify additional slaves on a slave index') if @options[:slave] || @options[:replica]
286
- raise ArgumentError.new('No block given') if !block_given?
287
- add_index(index_name, options.merge({ :slave => true, :primary_settings => self }), &block)
288
- end
289
-
290
275
  def additional_indexes
291
276
  @additional_indexes || {}
292
277
  end
@@ -304,11 +289,11 @@ module AlgoliaSearch
304
289
  # are correctly logged or thrown depending on the `raise_on_failure` option
305
290
  class SafeIndex
306
291
  def initialize(name, raise_on_failure)
307
- @index = ::Algolia::Index.new(name)
292
+ @index = AlgoliaSearch.client.init_index(name)
308
293
  @raise_on_failure = raise_on_failure.nil? || raise_on_failure
309
294
  end
310
295
 
311
- ::Algolia::Index.instance_methods(false).each do |m|
296
+ ::Algolia::Search::Index.instance_methods(false).each do |m|
312
297
  define_method(m) do |*args, &block|
313
298
  SafeIndex.log_or_throw(m, @raise_on_failure) do
314
299
  @index.send(m, *args, &block)
@@ -329,7 +314,7 @@ module AlgoliaSearch
329
314
  SafeIndex.log_or_throw(:get_settings, @raise_on_failure) do
330
315
  begin
331
316
  @index.get_settings(*args)
332
- rescue Algolia::AlgoliaError => e
317
+ rescue Algolia::AlgoliaHttpError => e
333
318
  return {} if e.code == 404 # not fatal
334
319
  raise e
335
320
  end
@@ -339,7 +324,7 @@ module AlgoliaSearch
339
324
  # expose move as well
340
325
  def self.move_index(old_name, new_name)
341
326
  SafeIndex.log_or_throw(:move_index, true) do
342
- ::Algolia.move_index(old_name, new_name)
327
+ AlgoliaSearch.client.move_index(old_name, new_name)
343
328
  end
344
329
  end
345
330
 
@@ -511,7 +496,7 @@ module AlgoliaSearch
511
496
  algolia_configurations.each do |options, settings|
512
497
  next if algolia_indexing_disabled?(options)
513
498
  index = algolia_ensure_init(options, settings)
514
- next if options[:slave] || options[:replica]
499
+ next if options[:replica]
515
500
  last_task = nil
516
501
 
517
502
  algolia_find_in_batches(batch_size) do |group|
@@ -531,7 +516,7 @@ module AlgoliaSearch
531
516
  end
532
517
  last_task = index.save_objects(objects)
533
518
  end
534
- index.wait_task(last_task["taskID"]) if last_task and (synchronous || options[:synchronous])
519
+ index.wait_task(last_task.raw_response["taskID"]) if last_task and (synchronous || options[:synchronous])
535
520
  end
536
521
  nil
537
522
  end
@@ -541,7 +526,7 @@ module AlgoliaSearch
541
526
  return if algolia_without_auto_index_scope
542
527
  algolia_configurations.each do |options, settings|
543
528
  next if algolia_indexing_disabled?(options)
544
- next if options[:slave] || options[:replica]
529
+ next if options[:replica]
545
530
 
546
531
  # fetch the master settings
547
532
  master_index = algolia_ensure_init(options, settings)
@@ -549,8 +534,6 @@ module AlgoliaSearch
549
534
  master_settings.merge!(JSON.parse(settings.to_settings.to_json)) # convert symbols to strings
550
535
 
551
536
  # remove the replicas of the temporary index
552
- master_settings.delete :slaves
553
- master_settings.delete 'slaves'
554
537
  master_settings.delete :replicas
555
538
  master_settings.delete 'replicas'
556
539
 
@@ -562,7 +545,7 @@ module AlgoliaSearch
562
545
  tmp_settings = settings.dup
563
546
 
564
547
  if options[:check_settings] == false
565
- ::Algolia::copy_index!(src_index_name, tmp_index_name, %w(settings synonyms rules))
548
+ @client.copy_index!(src_index_name, tmp_index_name, %w(settings synonyms rules))
566
549
  tmp_index = SafeIndex.new(tmp_index_name, !!options[:raise_on_failure])
567
550
  else
568
551
  tmp_index = algolia_ensure_init(tmp_options, tmp_settings, master_settings)
@@ -578,7 +561,7 @@ module AlgoliaSearch
578
561
  end
579
562
 
580
563
  move_task = SafeIndex.move_index(tmp_index.name, src_index_name)
581
- master_index.wait_task(move_task["taskID"]) if synchronous || options[:synchronous]
564
+ master_index.wait_task(move_task.raw_response["taskID"]) if synchronous || options[:synchronous]
582
565
  end
583
566
  nil
584
567
  end
@@ -587,8 +570,6 @@ module AlgoliaSearch
587
570
  algolia_configurations.each do |options, settings|
588
571
  if options[:primary_settings] && options[:inherit]
589
572
  primary = options[:primary_settings].to_settings
590
- primary.delete :slaves
591
- primary.delete 'slaves'
592
573
  primary.delete :replicas
593
574
  primary.delete 'replicas'
594
575
  final_settings = primary.merge(settings.to_settings)
@@ -598,7 +579,7 @@ module AlgoliaSearch
598
579
 
599
580
  index = SafeIndex.new(algolia_index_name(options), true)
600
581
  task = index.set_settings(final_settings)
601
- index.wait_task(task["taskID"]) if synchronous
582
+ index.wait_task(task.raw_response["taskID"]) if synchronous
602
583
  end
603
584
  end
604
585
 
@@ -606,9 +587,9 @@ module AlgoliaSearch
606
587
  algolia_configurations.each do |options, settings|
607
588
  next if algolia_indexing_disabled?(options)
608
589
  index = algolia_ensure_init(options, settings)
609
- next if options[:slave] || options[:replica]
590
+ next if options[:replica]
610
591
  task = index.save_objects(objects.map { |o| settings.get_attributes(o).merge 'objectID' => algolia_object_id_of(o, options) })
611
- index.wait_task(task["taskID"]) if synchronous || options[:synchronous]
592
+ index.wait_task(task.raw_response["taskID"]) if synchronous || options[:synchronous]
612
593
  end
613
594
  end
614
595
 
@@ -618,13 +599,13 @@ module AlgoliaSearch
618
599
  next if algolia_indexing_disabled?(options)
619
600
  object_id = algolia_object_id_of(object, options)
620
601
  index = algolia_ensure_init(options, settings)
621
- next if options[:slave] || options[:replica]
602
+ next if options[:replica]
622
603
  if algolia_indexable?(object, options)
623
604
  raise ArgumentError.new("Cannot index a record with a blank objectID") if object_id.blank?
624
605
  if synchronous || options[:synchronous]
625
- index.add_object!(settings.get_attributes(object), object_id)
606
+ index.save_object!(settings.get_attributes(object).merge 'objectID' => algolia_object_id_of(object, options))
626
607
  else
627
- index.add_object(settings.get_attributes(object), object_id)
608
+ index.save_object(settings.get_attributes(object).merge 'objectID' => algolia_object_id_of(object, options))
628
609
  end
629
610
  elsif algolia_conditional_index?(options) && !object_id.blank?
630
611
  # remove non-indexable objects
@@ -645,7 +626,7 @@ module AlgoliaSearch
645
626
  algolia_configurations.each do |options, settings|
646
627
  next if algolia_indexing_disabled?(options)
647
628
  index = algolia_ensure_init(options, settings)
648
- next if options[:slave] || options[:replica]
629
+ next if options[:replica]
649
630
  if synchronous || options[:synchronous]
650
631
  index.delete_object!(object_id)
651
632
  else
@@ -659,8 +640,8 @@ module AlgoliaSearch
659
640
  algolia_configurations.each do |options, settings|
660
641
  next if algolia_indexing_disabled?(options)
661
642
  index = algolia_ensure_init(options, settings)
662
- next if options[:slave] || options[:replica]
663
- synchronous || options[:synchronous] ? index.clear! : index.clear
643
+ next if options[:replica]
644
+ synchronous || options[:synchronous] ? index.clear_objects! : index.clear_objects
664
645
  @algolia_indexes[settings] = nil
665
646
  end
666
647
  nil
@@ -669,8 +650,6 @@ module AlgoliaSearch
669
650
  def algolia_raw_search(q, params = {})
670
651
  index_name = params.delete(:index) ||
671
652
  params.delete('index') ||
672
- params.delete(:slave) ||
673
- params.delete('slave') ||
674
653
  params.delete(:replica) ||
675
654
  params.delete('replica')
676
655
  index = algolia_index(index_name)
@@ -735,13 +714,11 @@ module AlgoliaSearch
735
714
  def algolia_search_for_facet_values(facet, text, params = {})
736
715
  index_name = params.delete(:index) ||
737
716
  params.delete('index') ||
738
- params.delete(:slave) ||
739
- params.delete('slave') ||
740
717
  params.delete(:replica) ||
741
718
  params.delete('replicas')
742
719
  index = algolia_index(index_name)
743
720
  query = Hash[params.map { |k, v| [k.to_s, v.to_s] }]
744
- index.search_facet(facet, text, query)['facetHits']
721
+ index.search_for_facet_values(facet, text, query)['facetHits']
745
722
  end
746
723
 
747
724
  # deprecated (renaming)
@@ -770,7 +747,7 @@ module AlgoliaSearch
770
747
  # Loop over each index to see if a attribute used in records has changed
771
748
  algolia_configurations.each do |options, settings|
772
749
  next if algolia_indexing_disabled?(options)
773
- next if options[:slave] || options[:replica]
750
+ next if options[:replica]
774
751
  return true if algolia_object_id_changed?(object, options)
775
752
  settings.get_attribute_names(object).each do |k|
776
753
  return true if algolia_attribute_changed?(object, k)
@@ -815,13 +792,10 @@ module AlgoliaSearch
815
792
  options[:check_settings] = true if options[:check_settings].nil?
816
793
 
817
794
  if !algolia_indexing_disabled?(options) && options[:check_settings] && algoliasearch_settings_changed?(current_settings, index_settings)
818
- used_slaves = !current_settings.nil? && !current_settings['slaves'].nil?
819
795
  replicas = index_settings.delete(:replicas) ||
820
- index_settings.delete('replicas') ||
821
- index_settings.delete(:slaves) ||
822
- index_settings.delete('slaves')
823
- index_settings[used_slaves ? :slaves : :replicas] = replicas unless replicas.nil? || options[:inherit]
824
- @algolia_indexes[settings].set_settings(index_settings)
796
+ index_settings.delete('replicas')
797
+ index_settings[:replicas] = replicas unless replicas.nil? || options[:inherit]
798
+ @algolia_indexes[settings].set_settings!(index_settings)
825
799
  end
826
800
 
827
801
  @algolia_indexes[settings]
@@ -1,14 +1,29 @@
1
1
  module AlgoliaSearch
2
2
  module Configuration
3
+ def initiliaze
4
+ @client = nil
5
+ end
6
+
3
7
  def configuration
4
8
  @@configuration || raise(NotConfigured, "Please configure AlgoliaSearch. Set AlgoliaSearch.configuration = {application_id: 'YOUR_APPLICATION_ID', api_key: 'YOUR_API_KEY'}")
5
9
  end
6
10
 
7
11
  def configuration=(configuration)
8
12
  @@configuration = configuration.merge(
9
- :user_agent => "Algolia for Rails (#{AlgoliaSearch::VERSION}); Rails (#{Rails::VERSION::STRING})"
13
+ :user_agent => "Algolia for Rails (#{AlgoliaSearch::VERSION}); Rails (#{Rails::VERSION::STRING})"
10
14
  )
11
- Algolia.init @@configuration
15
+ end
16
+
17
+ def client
18
+ if @client.nil?
19
+ setup_client
20
+ end
21
+
22
+ @client
23
+ end
24
+
25
+ def setup_client
26
+ @client = Algolia::Search::Client.create_with_config(Algolia::Search::Config.new(@@configuration))
12
27
  end
13
28
  end
14
29
  end
@@ -2,7 +2,7 @@ module AlgoliaSearch
2
2
  module Utilities
3
3
  class << self
4
4
  def get_model_classes
5
- if defined?(Rails.autoloaders) && Rails.autoloaders.zeitwerk_enabled?
5
+ if Rails.application && defined?(Rails.autoloaders) && Rails.autoloaders.zeitwerk_enabled?
6
6
  Zeitwerk::Loader.eager_load_all
7
7
  elsif Rails.application
8
8
  Rails.application.eager_load!
@@ -1,3 +1,3 @@
1
1
  module AlgoliaSearch
2
- VERSION = '1.25.0'
2
+ VERSION = '2.0.0'
3
3
  end
data/spec/spec_helper.rb CHANGED
@@ -29,8 +29,9 @@ RSpec.configure do |c|
29
29
 
30
30
  # Remove all indexes setup in this run in local or CI
31
31
  c.after(:suite) do
32
- safe_index_list.each do |index|
33
- Algolia.client.delete_index!(index['name'])
32
+ safe_index_list.each do |i|
33
+ index = AlgoliaSearch.client.init_index(i['name'])
34
+ index.delete!
34
35
  end
35
36
  end
36
37
  end
@@ -45,7 +46,7 @@ end
45
46
 
46
47
  # get a list of safe indexes in local or CI
47
48
  def safe_index_list
48
- list = Algolia.client.list_indexes()['items']
49
+ list = AlgoliaSearch.client.list_indexes['items']
49
50
  list = list.select { |index| index["name"].include?(SAFE_INDEX_PREFIX) }
50
51
  list.sort_by { |index| index["primary"] || "" }
51
52
  end
@@ -1,6 +1,6 @@
1
1
  require File.expand_path(File.join(File.dirname(__FILE__), 'spec_helper'))
2
2
 
3
- AlgoliaSearch.configuration = { :application_id => ENV['ALGOLIA_APPLICATION_ID'], :api_key => ENV['ALGOLIA_API_KEY'] }
3
+ AlgoliaSearch.configuration = { :application_id => ENV['ALGOLIA_APPLICATION_ID'], :api_key => ENV['ALGOLIA_API_KEY'], :symbolize_keys => false }
4
4
 
5
5
  describe AlgoliaSearch::Utilities do
6
6
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: algoliasearch-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.25.0
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Algolia
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-11-24 00:00:00.000000000 Z
11
+ date: 2021-05-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json
@@ -25,25 +25,19 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: 1.5.1
27
27
  - !ruby/object:Gem::Dependency
28
- name: algoliasearch
28
+ name: algolia
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: 1.26.0
34
31
  - - "<"
35
32
  - !ruby/object:Gem::Version
36
- version: 2.0.0
33
+ version: 3.0.0
37
34
  type: :runtime
38
35
  prerelease: false
39
36
  version_requirements: !ruby/object:Gem::Requirement
40
37
  requirements:
41
- - - ">="
42
- - !ruby/object:Gem::Version
43
- version: 1.26.0
44
38
  - - "<"
45
39
  - !ruby/object:Gem::Version
46
- version: 2.0.0
40
+ version: 3.0.0
47
41
  - !ruby/object:Gem::Dependency
48
42
  name: will_paginate
49
43
  requirement: !ruby/object:Gem::Requirement
@@ -188,7 +182,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
188
182
  - !ruby/object:Gem::Version
189
183
  version: '0'
190
184
  requirements: []
191
- rubygems_version: 3.0.3
185
+ rubyforge_project:
186
+ rubygems_version: 2.7.6.2
192
187
  signing_key:
193
188
  specification_version: 4
194
189
  summary: AlgoliaSearch integration to your favorite ORM