algoliasearch-rails 1.25.0 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.MD +8 -1
- data/Gemfile +9 -35
- data/Gemfile.lock +125 -116
- data/README.md +1 -1
- data/algoliasearch-rails.gemspec +3 -3
- data/lib/algoliasearch-rails.rb +31 -57
- data/lib/algoliasearch/configuration.rb +17 -2
- data/lib/algoliasearch/utilities.rb +1 -1
- data/lib/algoliasearch/version.rb +1 -1
- data/spec/spec_helper.rb +4 -3
- data/spec/utilities_spec.rb +1 -1
- metadata +7 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d738368dd1684b9fa58b5507e65d0d7522930a6894e0e9684139fbd5def1a583
|
4
|
+
data.tar.gz: 8fdd59e52471fd184cf51092706fb345d699cd9d135385bd0a7ade084ec8dc2d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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/
|
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', '
|
4
|
-
gem '
|
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"]
|
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
|
15
|
-
gem '
|
16
|
-
|
17
|
-
gem '
|
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
|
-
|
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
|
-
actionpack (=
|
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
|
-
|
9
|
-
actionpack (=
|
10
|
-
|
11
|
-
|
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 (
|
15
|
-
actionview (=
|
16
|
-
activesupport (=
|
17
|
-
rack (~> 2.0, >= 2.0.
|
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
|
21
|
-
|
22
|
-
|
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.
|
27
|
-
active_model_serializers (0.10.
|
28
|
-
actionpack (>= 4.1, < 6.
|
29
|
-
activemodel (>= 4.1, < 6.
|
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 (
|
33
|
-
activesupport (=
|
47
|
+
activejob (6.1.3.1)
|
48
|
+
activesupport (= 6.1.3.1)
|
34
49
|
globalid (>= 0.3.6)
|
35
|
-
activemodel (
|
36
|
-
activesupport (=
|
37
|
-
activerecord (
|
38
|
-
activemodel (=
|
39
|
-
activesupport (=
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
activerecord (=
|
44
|
-
|
45
|
-
|
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 (>=
|
48
|
-
minitest (
|
49
|
-
tzinfo (~>
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
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.
|
77
|
+
concurrent-ruby (1.1.8)
|
60
78
|
crass (1.0.6)
|
61
79
|
diff-lcs (1.4.4)
|
62
|
-
erubi (1.
|
63
|
-
|
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
|
-
|
66
|
-
|
67
|
-
|
68
|
-
gh (0.
|
69
|
-
|
70
|
-
|
71
|
-
faraday (~>
|
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 (
|
79
|
-
|
80
|
-
i18n (1.8.5)
|
97
|
+
highline (1.7.10)
|
98
|
+
i18n (1.8.10)
|
81
99
|
concurrent-ruby (~> 1.0)
|
82
|
-
json (
|
83
|
-
json_pure (2.3.1)
|
100
|
+
json (2.5.1)
|
84
101
|
jsonapi-renderer (0.2.2)
|
85
|
-
kaminari (
|
86
|
-
|
87
|
-
|
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.
|
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.
|
105
|
-
mimemagic (~> 0.3.2)
|
112
|
+
marcel (1.0.1)
|
106
113
|
method_source (1.0.0)
|
107
|
-
|
108
|
-
|
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.
|
116
|
-
nokogiri (1.
|
117
|
-
|
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 (
|
126
|
-
actioncable (=
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
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 (
|
144
|
-
actionpack (=
|
145
|
-
activesupport (=
|
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 (
|
155
|
+
thor (~> 1.0)
|
149
156
|
rake (10.1.1)
|
150
|
-
rdoc (6.
|
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
|
-
|
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.
|
170
|
-
thor (1.0
|
171
|
-
|
172
|
-
|
173
|
-
faraday (~>
|
174
|
-
faraday_middleware (~>
|
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 (~>
|
177
|
-
|
178
|
-
launchy (~> 2.1, < 2.5.0)
|
182
|
+
highline (~> 1.6)
|
183
|
+
launchy (~> 2.1)
|
179
184
|
pusher-client (~> 0.4)
|
180
|
-
|
181
|
-
|
182
|
-
|
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
|
-
|
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
|
-
|
204
|
+
algolia (< 3.0.0)
|
196
205
|
jdbc-sqlite3
|
197
|
-
json (
|
198
|
-
kaminari
|
199
|
-
rails (
|
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 (
|
214
|
+
sqlite3 (~> 1.4.0)
|
206
215
|
travis
|
207
216
|
will_paginate (>= 2.3.15)
|
208
217
|
|
209
218
|
BUNDLED WITH
|
210
|
-
2.
|
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://
|
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>
|
data/algoliasearch-rails.gemspec
CHANGED
@@ -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<
|
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<
|
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<
|
94
|
+
s.add_dependency(%q<algolia>, ["< 3.0.0"])
|
95
95
|
end
|
96
96
|
end
|
97
97
|
|
data/lib/algoliasearch-rails.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require '
|
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[:
|
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[:
|
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[:
|
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[:
|
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[:
|
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[:
|
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[:
|
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 =
|
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::
|
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
|
-
|
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[:
|
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[:
|
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
|
-
|
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[:
|
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[:
|
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.
|
606
|
+
index.save_object!(settings.get_attributes(object).merge 'objectID' => algolia_object_id_of(object, options))
|
626
607
|
else
|
627
|
-
index.
|
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[:
|
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[:
|
663
|
-
synchronous || options[:synchronous] ? index.
|
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.
|
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[:
|
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
|
-
|
822
|
-
|
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
|
-
|
13
|
+
:user_agent => "Algolia for Rails (#{AlgoliaSearch::VERSION}); Rails (#{Rails::VERSION::STRING})"
|
10
14
|
)
|
11
|
-
|
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!
|
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 |
|
33
|
-
|
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 =
|
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
|
data/spec/utilities_spec.rb
CHANGED
@@ -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:
|
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:
|
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:
|
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:
|
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:
|
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
|
-
|
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
|